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();
}
}
找到问题原因了,构造方法写错了,多了个void,而且构造器名字也写错,需要跟类名保持一致,即
public void testGeneric() {
this.courses = new ArrayList<Course>();
}
改为
public TestGeneric() {
this.courses = new ArrayList<Course>();
}
TestGeneric tg = new TestGeneric(); tg.testGeneric(); tg.testAdd();
未初始化 public List<Course> courses;
应在添加之前调用初始化 方法
tg.testGeneric();