err 部分在代码中大写,它也出现在 foreaching 中。由于抽象列表,无法初始化,声明在静态字段中。这些列表具有相同的类型。
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()?
不初始化的原因是无法使用= new List<String>()
. 我看不到不允许这样做的逻辑。它必须与内在因素有关,例如数据结构或其他东西。
Test.java:7: java.util.List is abstract; cannot be instantiated
public static List<String> ops = new List<String>();
为什么列表是一个接口?
我知道许多数据结构(例如堆栈实现列表)。但是我不明白为什么 List 是一个接口,而为什么不是 Table 。我将 list 视为一种原始结构,您可以使用它来实现其他结构。接口是您可以指定结构要求的东西。是接口的原始性还是扩展性的原因?