Что означает знак вопроса внутри угловых скобок: <? extends java.lang.Comparable> - PullRequest
11 голосов
/ 28 февраля 2010

В App Engine, согласно JavaDoc , метод getTypeRank имеет такую ​​подпись:

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

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

<? extends java.lang.Comparable>

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

Ответы [ 4 ]

9 голосов
/ 28 февраля 2010

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

4 голосов
/ 28 февраля 2010

Это называется ограниченным подстановочным знаком

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

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

1 голос
/ 28 февраля 2010

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

0 голосов
/ 28 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...