把 this.courseToSelect=new ArrayList(); 改为 List courseToSelect=new ArrayList(); 发生异常

来源:4-4 学生选课---添加课程 Ⅰ

qq_海赋_0

2017-08-04 00:44

把  this.courseToSelect=new ArrayList();

改成   List courseToSelect=new ArrayList();

为什么在运行时会有异常呢?

请指教

http://img.mukewang.com/5983527c0001b28a05740077.jpg


写回答 关注

3回答

  • 南图
    2017-08-14 18:22:17

    你的List (指向类型)courseToSelect (属性)是在无参的构造方法里的 叫局部变量,也可以理解为方法内的属性, 而你要初始化的是本类的courseToSelect(属性)。所以要用this这个关键字(this是当前对象,this.属性 表示操作当前对象的方法

    南图

    不好意思 打快了,最后两个字(方法改成属性)!!!

    2017-08-14 18:24:07

    共 1 条回复 >

  • 勤奋的许小磊同学
    2017-08-04 13:10:34

    你可以在类中声明的时候直接定义。

  • Harvey_Wang
    2017-08-04 12:41:54

    构造函数里面的

    this.courseToSelect=new ArrayList();

    是为了给成员变量创建一个对象,并用courseToSelect对其应用,this关键字表示这个courseToSelect属于对象的,如果改成:

    List courseToSelect=new ArrayList();

    这个courseToSelect就变成了局部变量,并没有传递给成员变量,因此后面调用coursesToSelect.add()时,实际上对象的courseToSelect并没有通过构造函数初始化,仍然是一个NULL,运行时就会出现空指针异常。

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题