На данный вопрос уже ответили:
Есть метод:
public static <T> void fill(List<T> list, T val) {
for (int i = 0; i < list.size(); i++)
list.set(i, val);
}
Зачем этот <T>
перед void
стоит? Что он делает? Ничего же не возвращается - зачем оно тут? И главное как соотносится этот <T> void...
с тем что в параметрах (List<T> list, T val)
Здесь <T>
относится не к результату метода (void
), а ко входным параметрам (List<T> list, T val
). Просто так принято, что переменная типа вводится после модификаторов и перед возвращаемым типом. Это является особенностью обобщенного метода.
Согласно спецификации Java SE 8 Edition (8.4 Method Declarations) метод определяется следующим образом
MethodDeclaration:
{MethodModifier} MethodHeader MethodBody
MethodHeader:
Result MethodDeclarator [Throws]
TypeParameters {Annotation} Result MethodDeclarator [Throws
^^^^^^^^^^^^^^
То есть в вашем объявлении метода
public static <T> void fill(List<T> list, T val)
^^^
выделенная часть - это объявление параметров типов TypeParameters
для обобщенных методов. То есть эта часть объявления обобщенного метода служит для объявления переменных типов, используемых в определении метода.
Объявление вашего метода можно подробнее расписать следующим образлм
public static <T> void fill(List<T> list, T val)
MethodModifier TypeParameters Result MethodDeclarator
Я пытаюсь сделать свой файловый менеджер и столкнулся с такой проблемойКогда я пытаюсь выбрать файл, а не директорию, то моя программа слетает
Мне необходимо закрасить фон выделенного пункта JMenuПробовал напрямую обратится к объекту и использовать setBackground()- тщетно
Всем приветСкажите пожалуйста, какую замену можно придумать оконному DLL на Linux + java