package collection;
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>();
}
public void testAdd(){
Course cr1=new Course("1","数据结构");
courses.add(cr1);
Course cr2=new Course("2","高等数学");
courses.add(cr2);
//泛类型的集合中不能添加泛类型规定之外的对象,否则会报错
//courses.add("我是字符串")
//Course cr2=new Course("2","JAVA基础");
//courses.add(cr2);
}
/*
* 测试循环遍历的方法
*
*/
public void testForEach(){
for(Course c:courses){
System.out.println(c.id+":"+c.name);
}
}
/**
* 泛型集合可以添加泛型的子类型的对象实例
* @param args
*/
public void testChild(){
ChildCourse ccr=new ChildCourse();
ccr.id="3"; ccr.name="我是子类型的课程对象实例";
courses.add(ccr);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
testGeneric tg=new testGeneric();
tg.testAdd();
tg.testForEach();
tg.testChild();
}
}
运行时报错:
Exception in thread "main" java.lang.NullPointerException
at collection.testGeneric.testAdd(testGeneric.java:16)
at collection.testGeneric.main(testGeneric.java:48)
public void TestGeneric(){
this.courses=new ArrayList<Course>();
}
把这段代码的void去掉。里面this.courses=new ArrayList<Course>();的初始化是要写在构造方法内。
Exception in thread "main" java.lang.NullPointerException : 表示空指针也就是说List集合没有初始化。
list一定要初始化否则会报错
构造方法不能加返回值类型!