Разница между instanceof List и 'o instanceof List‹?>"

Не вижу разницы в следующем:

    Object o = new LinkedList<Long>();

    System.out.println(o instanceof List); 
    System.out.println(o instanceof List<?>);

Есть ли практическое применение instanceof List<?>, когда вместо него нельзя использовать instanceof List, и наоборот?


person andrii    schedule 09.06.2011    source источник
comment
ваши персонажи не появились.   -  person Cosmin Cosmin    schedule 09.06.2011


Ответы (2)


Нет разницы. Подстановочный знак стирается во время компиляции.

person Bozho    schedule 09.06.2011

Согласно этому блогу, ответ "они точно такие же":

поскольку javac запрещает выражения instanceof, целевой тип которых является универсальным типом; для приведения компилятор немного более либерален, поскольку приведение к общему типу разрешено, но выдается предупреждение (см. выше). В любом случае необработанный тип должен быть заменен неограниченным подстановочным знаком, поскольку они имеют схожие свойства по отношению к типу. подтип.

Object o = new ArrayList<String>();
List<?> list_string = (List)o; //same as (List<?>)o
boolean b = o instanceof List; //same as o instanceof List<?>
person abalogh    schedule 09.06.2011