2016-06-28 3 views
1

Как будет выглядеть следующий способ применения стирания стирания?Java Generics - метод после стирания типа

static<T> void InsertAt0(List<T> mylist, T element) { 
    mylist.add(0, element); 
} 

будет T заменить Object? или, возможно, стирание стилей - это только классы дженериков?

ответ

4

Просто удалите все <T> с, а затем заменить любой T с объектом:

static void InsertAt0(List mylist, Object element) { 
    mylist.add(0, element); 
} 

Обратите внимание, что MyList выше было стерто его raw type эквивалента: List<T> стал просто List.

Если вы указали подстановочные направляющийся T, как <T extends Number>, то вы бы заменить T с этим связаны вместо объекта:

static void InsertAt0(List mylist, Number element) { 
            ^^^^^^ 
+0

Просто добавить, уведомление Список стирается, и становится список. Взгляните на эту ссылку OP: https://en.wikipedia.org/wiki/Generics_in_Java#Problems_with_type_erasure – angryip

+1

@angryip Я сделаю это более явным, спасибо! – yshavit

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