Я пишу:
Class<? extends Task> a = n.getClass();
Метод getClass() должен вернуть объект описывающий класс и присвоить его переменной а.
Но вот это часть мне не понятна Class<? extends Task>. Что это за тип переменной такой и куда переменную а теперь вообще можно использовать?
Хочу понять как это работает. Помогите разобраться.
особенно <? extends Task> знак вопроса убивает здесь что-то общее с тернарной операцией?
Примеры
public static double sumOfList(List<? extends Number> list) {
double s = 0.0;
for (Number n : list)
s += n.doubleValue();
return s;
}
public static void printList(List<?> list) {
for (Object elem: list)
System.out.print(elem + " ");
System.out.println();
}
public class ClassContainer {
private List<? extends Number> list;
public ClassContainer(List<? extends Number> list){
this.list = list;
}
public List<? extends Number> getList(){
return this.list;
}
}
Нет, что вы, нет здесь тернарной операции))
? extends Object - означает, что здесь может быть любой класс, унаследованный от Object. Вот аналогичная запись:
List<? extends Map<String, String>>
В коде где используются обобщённые типы знак вопроса ? называется шаблоном поиска (wildcard) и представляет собой неизвестный тип. Этот символ используется в различных ситуациях:
Есть определённые ограничения его применения.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости