2013-11-06 2 views
3

В коллекции я нашел следующее:Алмазный Generic и наследие в Java

@SuppressWarnings("unchecked") 
public static final List EMPTY_LIST = new EmptyList<>(); 

Я действительно не могу найти никаких оснований для использования:

new EmptyList<>() 

здесь вместо:

new EmptyList() 

как было бы для java < 1.7.

Есть ли разница между этим подходом?

+0

Я не смог найти EmptyList в java1.7 – Prabhakaran

+1

@ByteCode это внутренний класс, используемый внутри Коллекций. – isnot2bad

+0

@ByteCode Вы найдете его в строке 3185 в источнике 'Collections'. – afsantos

ответ

2

Если вас беспокоит только <> оператор, вы должны увидеть What is the point of the diamond operator in Java 7?.

Что касается EMPTY_LIST: Либо вы делаете:

@SuppressWarnings("rawtypes") 
List list = Collections.EMPTY_LIST; 

или что-то вроде:

List<String> s = Collections.emptyList(); 

Причина использования <> Оператор сохраняет время компиляции проверки исходных типов. Вышеупомянутые ссылки хорошо описывают это.

+1

Думаю, он знает, в чем дело алмазного оператора. Он просто спрашивает, в чем смысл этого в сценарии, который он показал. –

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