Java-синтаксис для явного указания общих аргументов в вызовах методов - PullRequest
47 голосов
/ 10 июня 2010

Каков синтаксис для явного указания параметров типа для универсального метода Java?

Ответы [ 3 ]

58 голосов
/ 10 июня 2010

В соответствии с Java-спецификацией это будет, например,

Collections.<String>unmodifiableSet()

(Извините, что задаю и отвечаю на свой вопрос - я просто искал это в третий раз.: -)

28 голосов
/ 13 ноября 2017

Ниже приводится , а не синтаксис

<ArgType>genericMethod()

Кажется, аргументы типа должны следовать после точки, как в

SomeClass.<ArgType>genericMethod()
this.<ArgType>genericMethod()
p.<ArgType>genericMethod()
super.<ArgType>genericMethod()
SomeClass.super.<ArgType>genericMethod()
SomeClass.this.<ArgType>genericMethod()
4 голосов
/ 10 июня 2010

Хорошим примером из java.util.Collection определения универсального метода, который определяет его собственный универсальный тип, является Collection.toArray, где сигнатура метода выглядит так:

<T> T[] toArray(T[] a);

Здесь объявляется универсальный тип T, который определяется при вызове метода параметром T[] a и возвращает массив T. Поэтому тот же экземпляр может вызывать метод toArray в общем виде:

Collection<Integer> collection = new ArrayList<Integer>();
collection.add(1);
collection.add(2);

// Call generic method returning Integer[]
Integer[] ints = collection.toArray(new Integer[]{});

// Call generic method again, this time returning an Number[] (Integer extends Number)
Number[] nums = collection.toArray(new Number[]{});

Также см. Учебник Java по по параметрам универсального типа .

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