问答详情
源自:4-9 学生选课---应用泛型管理课程 Ⅰ

为什么会抛出空指针异常?

add处报错,抛出异常Exception in thread "main" java.lang.NullPointerException


代码如下:


import java.util.ArrayList;

import java.util.List;


public class TestGeneric {


/**

* 带有泛型Course的List类型属性

*/

public List<Course> courses;

public void testGeneric() {

this.courses = new ArrayList<Course>();

}

/**

* 测试添加课程

* @param args

*/

public void testAdd() {

Course cr1 = new Course("1", "小学语文");

courses.add(cr1);

Course cr2 = new Course("2", "小学数学");

courses.add(cr2);

// courses.add("能否添加其他类型的内容?");

}

/**

* 测试循环遍历

* @param args

*/

public void testForEach() {

for(Course cr : courses) {

System.out.println("课程-->" + cr.getId() + ":" + cr.getName());

}

}

/**

* 泛型集合可以添加泛型的子类型 的对象实例

* @param args

*/

public void testChild() {

ChildCourse ccr = new ChildCourse();

ccr.setId("3");

ccr.setName("我是子类型 的课程对象实例 ");

courses.add(ccr);

}

public static void main(String[] args) {

// TODO Auto-generated method stub

TestGeneric tg = new TestGeneric();

tg.testAdd();

// tg.testForEach();

// tg.testChild();

}


}


提问者:qq_罗金海丶_03796505 2018-09-26 23:28

个回答

  • qq_罗金海丶_03796505
    2018-09-27 20:00:24

    找到问题原因了,构造方法写错了,多了个void,而且构造器名字也写错,需要跟类名保持一致,即

    public void testGeneric() {

    this.courses = new ArrayList<Course>();

    }

    改为

    public TestGeneric() {

    this.courses = new ArrayList<Course>();

    }


  • 慕勒2701546
    2018-09-27 12:04:59

    TestGeneric tg = new TestGeneric();
    tg.testGeneric();
    tg.testAdd();


    未初始化 public List<Course> courses;

    应在添加之前调用初始化 方法

    tg.testGeneric();