Java:ListA.addAll(ListB)会触发NullPointerException吗?
发布时间:2020-12-15 05:19:08 所属栏目:Java 来源:网络整理
导读:错误的部分在代码中是大写的,它也在预告中.由于抽象列表,它无法初始化,声明在静态字段中.列表具有相同的类型. import java.util.*;public class Test{ public static final ListString highPrio = Arrays.asList("*","/"); public static ListString ops; pu
错误的部分在代码中是大写的,它也在预告中.由于抽象列表,它无法初始化,声明在静态字段中.列表具有相同的类型.
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); } } } 为什么不在初始化中使用新的List()? 不初始化的原因是无法使用= new List< String>().我看不到不允许它的逻辑.它必须与内在因素有关,例如数据结构或其他内容. Test.java:7:java.util.List是抽象的;无法实例化 为什么列表是一个界面? 我知道许多数据结构如堆栈实现列表.但我无法理解为什么List是一个接口,为什么不以Table为例.我将list视为一个原始结构,您可以使用它来实现其他结构.接口是可以指定结构要求的东西.作为界面的原始性或广泛性的原因是什么? 解决方法
因为ops为null. List是一个接口这一事实并不意味着你无法初始化该字段:
public static List<String> ops = new ArrayList<String>(); List是一个接口,因为有多种方法可以实现它,同时提供相同的合同(尽管性能特征不同).例如,ArrayList是数组支持的,而LinkedList是链表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |