Что Список <?> означает в дженериках Java?

EE Java является на самом деле набором технологий и API для платформы Java, разработанной для поддержки Приложений "Предприятия", которые могут обычно классифицироваться как крупномасштабные, распределенные, транзакционные и высоконадежные приложения, разработанные для поддержки бизнес-требований для решения ответственных задач.

С точки зрения того, что сотрудник ищет в определенном techs, довольно трудно сказать, потому что игровая площадка продолжала переключать прошлые пять лет. Это действительно о класс проблем, которые решаются больше, чем что-либо еще. Транзакции и распределение являются ключевыми.

42
задан Jeff Axelrod 5 May 2012 в 12:40
поделиться

7 ответов

The keyword you need to get more information is Wildcards

32
ответ дан 26 November 2019 в 23:38
поделиться

Как сказал Том, ? или неограниченный подстановочный знак означает, что тип объекта не указан. Это могло быть неизвестно, могло быть предназначено для нескольких возможных значений или могло быть просто несущественным. Ваш пример, Список , произносится как «Список неизвестных». Это удобно, потому что оно гибкое, но есть и некоторые подводные камни, потому что вы не можете засунуть случайные объекты и вытащить их из групп неизвестного безнаказанно.

Ресурсы:

  • Подстановочные знаки обсуждаются здесь в руководстве по Java.
  • Здесь есть хороший, хотя и подробный, учебник по дженерикам в целом от Анжелики Лангер.
  • И еще один хороший обзор здесь (PDF) Гилада Браха; проверьте страницы 5-7.
  • Наконец,
43
ответ дан 26 November 2019 в 23:38
поделиться

Похоже, вам следует поискать некоторую документацию по дженерикам Java.

Список List означает, что это объект, основанный на неопределенном на данный момент типе. Эта спецификация создается при создании экземпляра класса.

Например:

List<String> listOfStrings = new ArrayList<String>();

- это список объектов String.

4
ответ дан 26 November 2019 в 23:38
поделиться

List is an interface you can implement yourself and also implemented by some of the Java collections, like Vector.

You can provide compile-time typing information using the angled brackets. The most generic type would be Object, which would be List. The you see is indicating a List of some subclass of Object or an Object. This is like saying List, or List, where the List contains objects of some subclass of Foo or objects of Foo itself.

You can't instantiate a List; it's an interface, not an implementation.

3
ответ дан 26 November 2019 в 23:38
поделиться

Список означает Список , поэтому в Collection вы найдете containsAll (Collection c) ​​, который позволяет вам писать

List<Object> objs = Arrays.<Object>asList("one",2,3.14,4);
List<Integer> ints = Arrays.asList(2,4);
assert objs.containsAll(ints);//true
2
ответ дан 26 November 2019 в 23:38
поделиться

Когда вы берете элемент из коллекции, вы должны привести его к типу элемента, который является хранится в коллекции. Это не только неудобно, но и небезопасно. Компилятор не проверяет, совпадает ли ваше приведение с типом коллекции, поэтому приведение может завершиться ошибкой во время выполнения.

Generics предоставляет вам способ сообщить тип коллекции компилятору, так что это можно проверить. Как только компилятор узнает тип элемента коллекции, он может проверить, что вы использовали эту коллекцию последовательно, и может вставить правильные приведения значений, извлекаемых из коллекции.

chk dis pdf

0
ответ дан 26 November 2019 в 23:38
поделиться

You are probably looking at the template based List class. You can create a list of strings by List myList = new MyList(); as an example. Check the documentation for all the types it supports. It should support any object type, but if there is a sort functionality you have to supply some compare functions.

Note that in the example above MyList is a concrete class that implements the List interface in Java. It can be ArrayList.

EDIT: Я ошибочно принял List как конкретный класс. Исправлена ​​ошибка выше. Спасибо, Джон.

-1
ответ дан 26 November 2019 в 23:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: