Подтвердить что ты не робот

Дженерики, что означает <?> На самом деле?

Возможный дубликат:
Что такое List <? > в java generics?
Что означает знак вопроса в параметре типа generics Java?

Извините, но было трудно найти <?>.

Что значит в отношении дженериков Java? Я понимаю <A extends B> и <A super B>, но я никогда раньше не видел этот знак вопроса.

4b9b3361

Ответ 1

<?> является сокращением для <? extends Object>, он также известен как неограниченный шаблон. Таким образом, вы можете указать любой тип объекта в своем родовом формате.

Например, класс List объявляется как List<?>, потому что он может быть списком всего, что вы хотите.


Ресурсы

Ответ 2

Его тип wildcard. Это сокращение для ? extends Object

Если вы его получите, все, что вам известно, это его Object. Если вы пытаетесь установить, вы не можете, потому что это может быть любой подкласс класса.

Ответ 3

Его подстановочный знак. Предположим, что у вас есть коллекция, но тип этой коллекции неизвестен, поэтому вы обозначаете ее "?". Он просто указывает, что тип неизвестен. Для получения дополнительной информации см. http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf Я уверен, что это поможет.

Ответ 4

Подстановочный знак Generic является "чем-то". Он будет обрабатываться как нечто, выходящее из Object.

Из Java документация:

В общем коде знак вопроса (?), называемый подстановочным знаком, представляет собой неизвестный тип. Подстановочный знак можно использовать в различных ситуаций: как тип параметра, поля или локальной переменной; иногда как возвращаемый тип (хотя это более эффективная практика программирования более конкретно). Подстановочный знак никогда не используется как аргумент типа для общего вызова метода, создания экземпляра универсального класса или супертип.

Итак, например, List<?> - это список, содержащий объекты неизвестного типа.