172.16.0.151_20200908-陈政平
问题
public static void main(String[] args) {
Collection<String> c = null ;
// 引用变量中存储的值就是null
System.out.println( c ); // c == null ? "null" : c.toString()
// System.out.println( c.isEmpty() ); // java.lang.NullPointerException
//接口类型的引用变量指向了实现类类型的对象
c = new ArrayList<>();
// 引用变量中存储了堆区对象的地址
System.out.println( c ); // c == null ? "null" : c.toString()
// 但是堆区中的集合对象尚未存放任何元素
System.out.println( c.isEmpty() );
}
System.out.println( c.isEmpty() ); // java.lang.NullPointerException
这里为什么输出空指针异常?
原因是没有实现类去实现接口,接口引用变量中存储的值就是null,这个值没有指向任何内存,所以返回空指针异常。不知道这样解释对不对。
近期评论