Опитвам се да науча как да кодирам метод за връщане на списък с обекти от неизвестен тип. Наблюдавах този пример:
public <T> List<T> list(Class<T> c, List<Object> objectList){
List<T> list = new ArrayList<>();
for (Object o : objectList){
T t = c.cast(o);
list.add(t);
}
return list;
}
Защо е връщащият тип <T> List<T>
вместо просто List<T>
?
Отговори:
3 за отговор № 1Това е така, защото вашият list
метод има собствен аргумент от общ тип. <T>
въвежда този тип:
<T> List<T> list(Class<T> c, List<Object> objectList)
^ ^ ^
| +-------------+----- Use generic type
+--------------------------- Introduce generic type argument for use in the method
Първоначалната <T>
не се изисква, когато генеричните методи използват типови аргументи на своя затворен клас.
4 за отговор № 2
Това е не типа връщане:
public <T> List<T>
Това просто означава: Т е общ параметър просто за този един метод!
Можете да поставите типови параметри на a клас или само на методи. Вие виждате - когато всичките ви други методи се нуждаят от общ тип ... тогава може да го използвате само за един такъв метод.
виждам тук за по-нататъшно четене!
0 за отговор № 3
<T>
не е вид връщане.Той определя типа на този общ метод.Изглежда в списъка на параметрите също намирате клас с общ тип информация
0 за отговор № 4
Типът връщане IS List<T>
.
<T>
е "шаблон" / обща декларация: където декларирате генеричните си типове. Не мисля, че това е действителна част от типа на резултата (може да е грешно в това).