Обобщенный метод в Java
Параметр типа у метода пишут в угловых скобках перед типом возвращаемого значения. Дальше это имя можно ставить в типы аргументов и в тип результата - как обычное имя типа, только оно задается на месте объявления.
Метод, который возвращает список из одного переданного значения, подходит для любого типа элемента:
class Lists {
static <T> List<T> asList(T value) {
return List.of(value);
}
}
При вызове компилятор часто сам подставляет
конкретный тип вместо T по переданному
значению. Явно тип тоже можно указать в угловых
скобках перед именем метода:
void demo() {
List<String> tags = Lists.asList("io");
List<Integer> codes = Lists.<Integer>asList(404);
System.out.println(tags);
System.out.println(codes);
}
Для строки T становится String без
дополнительной записи. Для числа явная запись
Lists.<Integer>asList нужна, когда из
аргумента тип неочевиден или его нужно зафиксировать
жестко.
Объявите метод, который принимает одно
значение и возвращает список из двух таких
же элементов подряд. Для строки "ab"
выведите полученный список.
Для числа 7 получите список из двух
элементов с явным указанием типа элемента
в угловых скобках у метода и выведите
результат.