2015-08-27 4 views
0

Что именно означает следующие обозначения?Что означает «новый список()» обозначение?

List<Integer> list = new List<Integer>(){...} 

Могу ли я сказать, что я создаю экземпляр интерфейса List<E>? Скорее нет, потому что мы не можем создать новый экземпляр любого интерфейса в Java.

Ниже приведены все методы, которые должны быть перезаписаны этими обозначениями.

Но я не понимаю, какие именно методы должны быть перезаписаны. Они не все методы либо из List<E> или суперинтерфейсов Списка - Collection<E>, Iterable<E>

(нет методы, например hashCode() (если они весь Лист методы) или, например, parallelStream() метода (если они все наследуемые методы из суперинтерфейсов Листа))

List<Integer> list = new List<Integer>(){ 

     public boolean add(Integer e) {...} 
     public void add(int index, Integer element) {...} 
     public boolean addAll(Collection<? extends Integer> c) {...} 
     public boolean addAll(int index, Collection<? extends Integer> c {...}         
     public void clear() {...} 
     public boolean contains(Object o) {...} 
     public boolean containsAll(Collection<?> c) {...} 
     public Integer get(int index) {...} 
     public int indexOf(Object o) {...} 
     public boolean isEmpty() {...} 
     public Iterator<Integer> iterator() {...} 
     public int lastIndexOf(Object o) {...} 
     public ListIterator<Integer> listIterator() {...} 
     public ListIterator<Integer> listIterator(int index) {...} 
     public boolean remove(Object o) {} 
     public Integer remove(int index) {...} 
     public boolean removeAll(Collection<?> c) {...} 
     public boolean retainAll(Collection<?> c) {...} 
     public Integer set(int index, Integer element) {...} 
     public int size() {...} 
     public List<Integer> subList(int fromIndex, int toIndex) {...} 
     public Object[] toArray() {...} 
     public <T> T[] toArray(T[] a) {...} 

}; 

ответ

6

new List<Integer>() { ... } является аннотация используется для создания экземпляра анонимного класса, который реализует интерфейс List<Integer>.

Методы, которые вы должны реализовать, - это все методы, которые не имеют реализации в интерфейсе List или его интерфейсах предков. Все методы класса Object (такие как hashCode()) имеют неявную реализацию во всех интерфейсах. Другие методы могут иметь реализации по умолчанию, если вы используете Java 8 (я предполагаю, что это имеет место для parallelStream()).

0

Вы пытаетесь создать список известных значений? В этом случае вам необходима реализация списка, как это:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3)); 

Чтобы создать пустой список, было бы просто:

List<Integer> list = new ArrayList<Integer>(); 
Смежные вопросы