集合操作 异常处理

异常名:

Exception in thread “main” java.lang.NullPointerException
at com.ActionEvent.Girl.addEmotionListener(Girl.java:22)
at com.ActionEvent.EmotionTest.main(EmotionTest.java:45)

代码段如下:

在构建集合ArrayList时创建集合对象的地方可以有两个地方,但是各自有所区别:
在声明的同时便为它创建集合对象:这种方法推荐使用,不容易出错,以免的在后面对集合操作如添加元素时发生上述异常;
在构造器中为其创建对象,我们都知道,构造器是创建对象的时候必须调用的方法,

但是要注意一点:
在执行如下代码的情况下:
//构建女孩对象
Girl mr = new Girl(“马蓉”);
此时如果执行这个程序便会有上述异常,因为在创建对象时默认调用有参数的构造器,并没有调用无参构造器(只有在子父类关系时创建子类对象才会去自动执行父类的无参构造方法)。
从而ArrayList集合对象也就只是作了声明,虽然在编译时不会报错,但是程序执行过程中出现NullPointException异常;

相反地,如果在声明的同时便为其创建对象或者在有参构造器中创建对象则会成功!
//事件源
public class Girl {
    private String name;
    private List<EmotionListener> els; //= new ArrayList<EmotionListener>();//列表
    public Girl(){
        //els = new ArrayList<EmotionListener>();
    }
    public Girl(String name){
        //els = new ArrayList<EmotionListener>();n
        this.setName(name);
    }
    public void addEmotionListener(EmotionListener e){
        els.add(e);
    }
}



构造器之间的调用:

创建子类对象时,程序总是先去执行父类中哪个与之相关联的构造器执行,然后才执行自身的哪个构造器;
当子类中有无参构造器时,父类中必须有无参构造器;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值