Java Обобщения <T>Значение - PullRequest
0 голосов
/ 13 февраля 2020

Я читал и просматривал следующий сайт, и у меня возник вопрос.

https://www.geeksforgeeks.org/angle-bracket-in-java-with-examples/

В пояснениях ниже приведены определения классов, за которыми следует <T> и затем при фактической реализации этих классов они используют разные типы, такие как или как параметры. Мой вопрос: является ли нотация '' определенным синтаксисом в Java? В частности, является ли буква T необходимой для определения «Generi c»? И тогда это в основном означает, что параметры могут быть нескольких разных типов? Кроме того, если кто-то может перефразировать или объяснить в более простых терминах, что означает обобщение c, это было бы очень полезно. Спасибо.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2020

<T> действительно является синтаксисом, определенным Java, но вы можете использовать любое имя, которое хотите назвать типом, вам не нужно использовать T, например, это допустимо:

public class Box<MyType> {
    private MyType t;

    public void set(MyType t) { this.t = t; }
    public MyType get() { return t; }
}

Но придерживайтесь T или имен других распространенных типов, поскольку другие люди уже привыкли видеть их как "generi c types", поэтому чтение кода становится проще.

Я рекомендую вам прочитать Java's Trail о Generics , где вы можете найти наиболее часто используемые имена параметров типа:

E - Element
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types

Что касается "каково значение generics" ", проверьте другую страницу .

1 голос
/ 13 февраля 2020

Это определенный синтаксис начиная с Java 5. Вам нужен параметр типа (один или несколько) для определения обобщенного c. Параметр типа не должен называться T, подойдет любой идентификатор Java. Обычно используется одна заглавная буква, и T для типа - это то, что мы часто выбираем, если у нас нет конкретной причины c для какой-либо другой буквы.

Фактический параметр типа должен быть ссылкой тип. Значения по-прежнему всегда go в реальных параметрах в круглых скобках, а не в параметрах типа (в отличие, например, от C ++). Вы можете создать new ArrayList<Integer>(50), список Integer объектов с начальной вместимостью 50 из них.

То, что фактический параметр типа должен быть ссылочным типом, означает, что вы можете иметь List<String> , List<LocalDate> или список типа интерфейса, который вы объявили сами, даже List<int[]>. В Java версиях, которые я использовал (до Java 10), параметр типа не может быть типом примитива (например, int), но это может быть тип массива (например, int[] или String[][], хотя часто непрактично). Разрешенные типы примитивов могут появиться в будущем Java версии.

Ссылка: Аналогичный вопрос: Что означает (угловые скобки) в Java?

...