Что означает значение вопроса в угловых скобках: <? extends java.lang.Comparable>

В App Engine, в соответствии с JavaDoc, метод getTypeRank имеет эту подпись:

public static int getTypeRank(java.lang.Class<? extends java.lang.Comparable> datastoreType)

В сигнатуре метода есть знак вопроса внутри угловых скобок:

<? extends java.lang.Comparable>

Что это значит?

Ответ 1

? по существу указывает на шаблон. <? extends java.lang.Comparable> означает "любой тип, который расширяет java.lang.Comparable(или Comparable) может быть использован здесь".

Ответ 2

Он назвал ограниченный подстановочный знак

<? extends Comparable> - пример ограниченного шаблона.? обозначает неизвестный тип, так же как и подстановочные знаки, которые мы видели ранее. Однако в этом случае мы знаем, что этот неизвестный тип на самом деле является подтипом Comparable. (Примечание: это может быть Сопоставимый или некоторый подкласс, он не должен буквально распространять Comparable.)

Подробнее вы найдете здесь

Ответ 3

Это означает "любой класс, реализующий интерфейс Comparable. Таким образом, вызов будет выглядеть, например, как getTypeRank(String.class).

Ответ 4

? относится к любому подклассу java.lang.Comparable. Другими словами, любой класс, расширяющий java.lang.Comparable.