為什么會(huì)拋出空指針異常?
add處報(bào)錯(cuò),拋出異常Exception in thread "main" java.lang.NullPointerException
代碼如下:
import java.util.ArrayList;
import java.util.List;
public class TestGeneric {
/**
* 帶有泛型Course的List類(lèi)型屬性
*/
public List<Course> courses;
public void testGeneric() {
this.courses = new ArrayList<Course>();
}
/**
* 測(cè)試添加課程
* @param args
*/
public void testAdd() {
Course cr1 = new Course("1", "小學(xué)語(yǔ)文");
courses.add(cr1);
Course cr2 = new Course("2", "小學(xué)數(shù)學(xué)");
courses.add(cr2);
// courses.add("能否添加其他類(lèi)型的內(nèi)容?");
}
/**
* 測(cè)試循環(huán)遍歷
* @param args
*/
public void testForEach() {
for(Course cr : courses) {
System.out.println("課程-->" + cr.getId() + ":" + cr.getName());
}
}
/**
* 泛型集合可以添加泛型的子類(lèi)型 的對(duì)象實(shí)例
* @param args
*/
public void testChild() {
ChildCourse ccr = new ChildCourse();
ccr.setId("3");
ccr.setName("我是子類(lèi)型 的課程對(duì)象實(shí)例 ");
courses.add(ccr);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestGeneric tg = new TestGeneric();
tg.testAdd();
// tg.testForEach();
// tg.testChild();
}
}
2018-09-27
找到問(wèn)題原因了,構(gòu)造方法寫(xiě)錯(cuò)了,多了個(gè)void,而且構(gòu)造器名字也寫(xiě)錯(cuò),需要跟類(lèi)名保持一致,即
public void testGeneric() {
this.courses = new ArrayList<Course>();
}
改為
public TestGeneric() {
this.courses = new ArrayList<Course>();
}
2018-09-27
未初始化?public List<Course> courses;
應(yīng)在添加之前調(diào)用初始化 方法