Часть ошибки заглавная в коде, она также входит в foreaching. Из-за абстрактного списка его нельзя инициализировать, декларация находится в статическом поле. Списки имеют один и тот же тип.Java: ListA.addAll (ListB) запускает NullPointerException?
import java.util.*;
public class Test
{
public static final List<String> highPrio = Arrays.asList("*","/");
public static List<String> ops;
public static void main(String[] args)
{
//ERROR HERE, why do it throw nullPointer?
ops.addAll(highPrio);
for(String s : ops)
{
System.out.println(s);
}
}
}
Почему не новый список() в инициализации?
Причиной не инициализации является невозможность использования = new List<String>()
. Я не вижу логики, не позволяющей этого. Это должно иметь какое-то отношение к внутренним факторам, таким как структура данных или что-то еще.
Test.java:7: java.util.List is abstract; cannot be instantiated public static List<String> ops = new List<String>();
Почему список представляет собой интерфейс?
Я знаю, что многие данные, такие как стек, реализуют список. Но я не могу понять, почему List является интерфейсом и почему не Table, например. Я вижу список как примитивную структуру, с помощью которой вы можете реализовать другие структуры. Интерфейс - это то, где вы можете указать требования к структуре. Является ли primitivenness или extensivens причиной быть интерфейсом?
Test.java:7:. java.util.List является абстрактным, не может быть создан \t общественности статического списка опса = новый список (); <- - но я не могу этого понять. –
hhh
Список - это интерфейс, поэтому он не имеет конструктора. –
Список - это интерфейс, но если вы lo ok в коде, он создает ArrayList, который реализует интерфейс List. –