泛型实践时出错!哪里不对?

来源:4-9 学生选课---应用泛型管理课程 Ⅰ

煎饼学徒

2016-03-03 10:31

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)


写回答 关注

3回答

  • qq_N1名前変_0
    2016-03-03 15:40:25
    已采纳

    public void TestGeneric(){

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

    }

    把这段代码的void去掉。里面this.courses=new ArrayList<Course>();的初始化是要写在构造方法内。

    Exception in thread "main" java.lang.NullPointerException : 表示空指针也就是说List集合没有初始化。

    煎饼学徒

    非常感谢!明白啦!

    2016-03-14 21:13:38

    共 1 条回复 >

  • 怒放的生命012
    2016-06-06 20:46:03

    list一定要初始化否则会报错 

  • souchy
    2016-03-03 15:50:36

    构造方法不能加返回值类型!

    煎饼学徒

    也非常感谢你的帮助,问题解决啦!

    2016-03-14 21:14:37

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题