Java generics как работает?

242
26 ноября 2016, 19:21

Я пишу:

Class<? extends Task> a = n.getClass();

Метод getClass() должен вернуть объект описывающий класс и присвоить его переменной а.

Но вот это часть мне не понятна Class<? extends Task>. Что это за тип переменной такой и куда переменную а теперь вообще можно использовать? Хочу понять как это работает. Помогите разобраться. особенно <? extends Task> знак вопроса убивает здесь что-то общее с тернарной операцией?

Answer 1

Примеры

  • Обозначение типа параметра
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;
}
}
Answer 2

Нет, что вы, нет здесь тернарной операции)) ? extends Object - означает, что здесь может быть любой класс, унаследованный от Object. Вот аналогичная запись:

List<? extends Map<String, String>>
Answer 3

В коде где используются обобщённые типы знак вопроса ? называется шаблоном поиска (wildcard) и представляет собой неизвестный тип. Этот символ используется в различных ситуациях:

  • обозначает тип параметра,
  • поля класса или типа локальной переменной,
  • тип возвращаемого значения.

Есть определённые ограничения его применения.

READ ALSO
Приложение на Java + БД + сервер [закрыто]

Приложение на Java + БД + сервер [закрыто]

В качестве нового опыта есть идея создать приложение на JAVA ( в планах простой чат с сервером и БД) чтобы там использовалось следующее:

214
Вызов из фрагмента метода активности

Вызов из фрагмента метода активности

У меня активность содержит фрагментПри нажатии кнопки в этом фрагменте, у меня должны измениться состояния View в макете активности

302
Анонимные классы [дубликат]

Анонимные классы [дубликат]

На данный вопрос уже ответили:

213
application context

application context

Пытаюсь развернуть вэб приложение на хостинге(там стоит томкат)По умолчанию tomcat предоставляет контекст к приложению равный имени war'ника,...

180