В чем разница между типами возврата » T» и «T» в JavaDocs

#java #generics #javadoc

#java #дженерики #Javadoc

Вопрос:

Я все еще обдумываю дженерики, поэтому буду признателен за помощь.

Комментарии:

1. Можете ли вы привести по одному примеру каждого из них в JDK или в сторонней библиотеке?

Ответ №1:

В обоих случаях возвращаемый тип равен T .

Если вы видите <T> раньше, это означает, что общий тип T был определен на уровне метода:

 <T extends JustAnExample> T getThatThing() {
  // ...
}
  

Если нет, то, вероятно, это было определено на уровне класса:

 class MyClass<T extends JustAnExample> {
  T getThatThing() {
    // ...
  }
}
  

Или технически это может быть просто класс с именем T , хотя эти однобуквенные типы обычно относятся к обобщенным (чисто условно):

 class MyClass {
  T poorlyNamedTypeYuck() {
    // ...
  }
}
  

Обратите внимание, что вам не обязательно использовать T в качестве возвращаемого типа:

 <T> void thisIsAlsoValid(T genericUsedHere, List<T> orElseWhere) {
  // ...
}