【发布时间】:2010-05-08 05:10:43
【问题描述】:
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 视为一种原始结构,您可以使用它来实现其他结构。接口是您可以指定结构要求的东西。是接口的原始性还是扩展性的原因?
【问题讨论】:
-
我在使用 List
immutableList = Collections.emptyList(); 时遇到了类似的问题更改为 List mutableList = new ArrayList();解决了。
标签: java list nullpointerexception add