当我用Student student 对象去调用courses时候,他报出来空指针异常,调用没有初始化的对象
System.out.println("备选课程中是否包含课程:"+course2.name+","+
student.courses.contains(course2));
请输入学生已选的课程名称:
数据结构
新创建课程:数据结构
Exception in thread "main" java.lang.NullPointerException
at a1.SetTest.testSetContains(SetTest.java:118)
at a1.SetTest.main(SetTest.java:129)
我又换成coursesToSelect对象去调用,程序就能正常运行,这是为什么?为什么会没有初始化对象?视频里的也是直接声明一个student对象
System.out.println("备选课程中是否包含课程:"+course2.name+","+
coursesToSelect.contains(course2));
请输入学生已选的课程名称:
数据结构
新创建课程:数据结构
备选课程中是否包含课程:数据结构,true
student类源码
public class Student {
public String id;
public String name;
public Set<Course> courses; //存储学生课程信息
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Student))
return false;
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public Student(String id,String name){
this.id=id;
this.name=name;
this.courses = new HashSet<Course>();//实例化
}
}
看一下你student类是什么定义的?你发一下student源代码