Объясните синтаксис коллекций. опорожнитель()
Я только что изучал общее Программирование,List<E> интерфейс, и ArrayList, Так что я могу понять утверждение ниже.
ArrayList<String> list = new ArrayList<String>();
но я не понимаю следующее заявление, которое я видел во время серфинга в интернете.
List<String> list2 = Collections.<String>emptyList();
- что это
Collections? Почему бы и нетCollections<E>илиCollections<String>? - почему
<String>ставится перед именем методаemptyList?
(не emptyList<String>() исправить Общий?)
- что означает это утверждение?
5 ответов:
эта строка создает пустой список строк, вызывая статический метод с параметром универсального типа.
внутри
Collectionsкласса есть статический методemptyListобъявлен как:public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; }это имеет общий тип параметра
T. Мы вызываем вызов этого метода с помощью:List<String> list = Collections.emptyList();и
Tвыводится какStringиз-за типаlist.мы также можем указать тип
Tв угловые скобки при вызовеemptyList. Это может быть необходимо, если мы хотим более конкретный тип, чем выводится:List<? extends Object> list = Collections.<String>emptyList();
emptyList<String>()неверно, потому что это размещение допустимо только при создании экземпляры универсальных классов, не вызывающие методы. При использованииnewвозможны два варианта параметры типа, те, что перед именем класса, предназначены только для конструктора, а те, что после имени класса, - для всего экземпляра, поэтому с классом:class MyClass<A> { public <B> MyClass(A a, B b) { System.out.println(a + ", " + b); } }мы можно вызвать его конструктор, где
AиStringиBиIntegerкак:MyClass<String> a = new <Integer>MyClass<String>("a", 3);или с помощью определения типа:
MyClass<String> a = new MyClass<>("a", 3);Читайте также:
что это
Collections? Почему бы и нетCollections<E>илиCollections<String>?
Collections- это класс JDK.этот класс состоит исключительно из статических методов, которые работают на или возвращаемая коллекция. Он содержит полиморфные алгоритмы, которые работают на коллекции, "обертки", которые возвращают новую коллекцию при поддержке указанная коллекция и несколько других мелочей.
это не общий и невозможно создать экземпляр.
почему
<String>ставится перед именем методаemptyList?
Collections#emptyListявляется общим методом. Здесь мы явно указываем аргумент типа,String.(не
emptyList<String>()правильно для общего?)нет, в Java аргументы универсального типа для методов стоят перед именем метода.
что означает заявление в смысле?
мы вызываем статический!--5--> метод и присвоить возвращаемое значение переменной типа
List<String>.
в двух словах, это создает пустой неизменяемый список строк.
давайте посмотрим на выражение по крупицам.
Collections- это имя класса. Из документация:этот класс состоит исключительно из статических методов, которые работают или возвращают коллекции. Он содержит полиморфные алгоритмы, которые работают с коллекциями, "обертками", которые возвращают новую коллекцию, подкрепленную указанная коллекция и несколько других мелочей.
emptyList()- имя статического метода, определенного вCollectionsкласса (документация). Это общий метод, и<String>наCollections.<String>emptyList()задает аргумент универсального типа.метод возвращает a
List<T>, что в данном случаеList<String>: список строк. Более конкретно, он возвращает пустой,неизменяемые список веревка.
1.Коллекция-это интерфейс, а коллекции-это статический класс, состоящий исключительно из статических методов, которые работают с коллекциями или возвращают их. Поэтому мы не можем использовать
Collections<E>илиCollections<String>.2.
<String>перед emptyList (используется для получения пустого списка, который является неизменяемым) означает, что к нему могут быть добавлены только строковые значения. Например:list2.add("A"); list2.add("B");3.Оператор означает, что он создаст неизменяемый пустой список типа List.
вы можете проверить эту ссылку: разница между коллекцией Java и коллекциями
во-первых,
Collectionsявляется вспомогательной библиотекой статических методов, которые работают с различными типами коллекций. Если вы занимались каким-либо программированием на C++, это очень синонимично<algorithm>библиотека функций.в этом случае, вы вызываете статический метод
emptyList(), который возвращает пустой список определенного типа. Поскольку эти методы все еще требуют типа, ноCollections' методы могут ссылаться на многие типы, вы должны указать тип при вызове.In чтобы вызвать общий метод, вы должны вызвать его со списком параметров (т. е.
<String>)до имя метода, но после точка.List<String> someList = Collections.<String>emptyList();