Это позволит вам написать методы, которые могут выступать в качестве вспомогательных методов общего назначения для любого типа.
Вот пример обращения содержимого List
к обратному и возврата его в ArrayList
.
List<String> liststr = new ArrayList<>(List.of("A","B","C"));
List<String> reversed = reverse(liststr);
System.out.println(reversed);
List<Integer> listint = new ArrayList<>(List.of(1,2,3,4));
List<Integer> reverseint = reverse(listint);
System.out.println(reverseint);
А вот и метод.
public static <T> List<T> reverse(ArrayList<T> list) {
List<T> rev = new ArrayList<>();
for (int i = list.size()-1; i >= 0; i--) {
rev.add(list.get(i));
}
return rev;
}
Это можно было бы сделать по-другому, но для этого потребовалось бы casting
возвращаемого значения и могло бы также сгенерировать runtime
cast exception
.
Как и во всех обобщенных c методах и классах, конфликты типов будут разрешаться на compile time
, а не на runtime
.