问答详情
源自:4-4 学生选课---添加课程 Ⅰ

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

把  this.courseToSelect=new ArrayList();

改成   List courseToSelect=new ArrayList();

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

请指教

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


提问者:qq_海赋_0 2017-08-04 00:44

个回答

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

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

  • 勤奋的许小磊同学
    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,运行时就会出现空指针异常。