2010-08-16 6 views
2

У меня есть быстрый вопрос, как показано ниже: Вот простые примеры во всех этих вопросах: (! Очень хорошая книга)Сырые типов, неограниченная wilcard и ограниченные подстановочные

List a = new ArrayList(); 
List <?> b; 
List <? extends Object> c; 

Согласно Java SCJP Халид Моголами :

a = b; // ok. Widening conversion. 
b = a; // ok too. No unchecked warning. 

b = c; // ok 
c = b; // ok 

c=a; // ok but now will issue a unchecked warning. // clause 1 

Я понимаю, что любые сырые типы (пример а) при присвоении любых ограниченных wilcard ссылок, бесконтрольно предупреждение проблемы (так как содержание в этой сырой типа а может быть что угодно).

Мои вопросы, так как c - это верхняя верхняя граница (? Extends objects), не должна ли быть назначена c без этого предупреждения?

+0

Я понятия не имею, что это такое, но на самом деле вы имеете в виду верхнюю верхнюю границу? Обычно при наборе текста было бы более естественно говорить о верхней границе верхнего уровня (объединение множества типов относительно некоторого частичного порядка над ним). – Gian

+1

Привет, добро пожаловать в stackoverflow.com! К сожалению, ваш вопрос не имеет смысла, как сейчас. Просьба уточнить это (по крайней мере, ссылку на сообщение, которое вы цитируете, исправить повторение между 2. и 3.). В противном случае сообщение будет закрыто. – sleske

ответ

1

Если я правильно понимаю ваш вопрос (и я действительно не думаю, что я делаю), то, как представляется, два случая, в которых взаимодействие с сырыми типами может привести к возникновению непроверенного предупреждения, согласно this page:

  • Вызов метода или конструктора необработанного типа генерирует непроверенное предупреждение, если стирание изменяет любой из типов любого из аргументов метода или конструктора.
  • Назначение полю необработанного типа генерирует непроверенное предупреждение (§5.1.9), если стирание изменяет тип поля.

Таким образом, ответ на ваш вопрос, в основном, кажется, «erasure может привести к непроверенным предупреждения при наличии сырья и видов». Насколько я могу судить, это скорее всего произойдет, когда используются вложенные типы - я не вижу нигде в определении стирания, которое, вероятно, вызовет изменение типа, но, возможно, кто-то еще может предположить, является ли это не является источником этого.

+0

Спасибо за ваш ответ. Извините за недопонимание. Повторите мой текст. –

 Смежные вопросы

  • Нет связанных вопросов^_^