Что такое статическое <E>? - PullRequest
5 голосов
/ 13 августа 2010

Я просто читаю учебник по Java, и мне интересно, зачем <E> нужен после статического?


public static<E> Set<E> removeDups(Collection<E> c) {
    return new LinkedHashSet(c);
}


Спасибо, Сара

Ответы [ 2 ]

9 голосов
/ 13 августа 2010

Для удобства чтения между статическим и общим именем параметра обычно есть пробел. static объявляет метод как статический, т. Е. Не требуется экземпляр для его вызова. <E> объявляет, что существует неограниченный универсальный параметр E, который используется для параметризации аргументов метода и / или возвращаемого значения. Здесь он используется как в типе возврата, Set<E> для объявления метода, возвращающего набор E, так и в параметре Collection<E>, указывающем, что метод принимает коллекцию E.

Тип E не указан, только то, что возвращаемое значение и параметр метода должны быть обобщенно параметризованы с одним и тем же типом. Компилятор определяет фактический тип при вызове метода. Например,

   Collection<String> myStrings = new ArrayList<String>();
   .. add strings
   Set<String> uniqueStrings = SomeClass.removeDups(myStrings);

Если вы попытаетесь использовать разные параметризованные типы для двух коллекций, например

   Set<Integer> uniqueStrings = SomeClass.removeDups(myStrings);

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

2 голосов
/ 13 августа 2010

<E> - это способ объявить, что это универсальный метод функция, представленная в Generics в Java 5.0

См. здесь для получения более подробной информации оего использование и обоснование.

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