java addall 不能传null,当使用Collections.addAll()时,Java集合何时抛出NullPointerException异常...

Under what condition does the Collections.addAll() method throw a NullPointerException? The official docs mention:

NullPointerException - if the specified collection contains a null element and this collection does not permit null elements, or if the specified collection is null

How do I make sure that this "Collection does not permit null elements"

public class CollectionImpl {

public void checkList(){

List var1 = new ArrayList();

var1.add("One");

var1.add("Two");

var1.add("Three");

System.out.println("var1 : " + var1);

try{

if(Collections.addAll(var1,"Four" , "Five" , null , "1")){

System.out.println("True");

}

}

catch(NullPointerException e){

System.out.println("Caught Null Pointer Exception" + e);

}

catch(IllegalArgumentException e){

System.out.println("Caught IllegalArgument Exception" + e);

}

finally{

System.out.println("var1 : " + var1);

}

}

OUTPUT

var1 : [1, 2, null]

True

var1 : [1, 2, null, 4, 5, null, 6]

解决方案

Whether a collection supports null elements is a property of the collection implementation itself. It's not a setting that can be changed on a particular instance of a collection. As others have mentioned, whether a collection permits null should always be documented in the class's specification.

Your example uses ArrayList, which permits null elements, so calling addAll() with null values will always successfully add them to the list.

An example of a Collection that doesn't permit null values is ArrayDeque. If you change your declaration of var1 as follows:

Collection var1 = new ArrayDeque();

then you'll get a NullPointerException thrown from the call to addAll().

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值