在下面的示例中,我遇到了java.lang.NullPointerException
简要概述:类STANDALONE通过组合与类FACULTY相关,因为STANDALONE有一个实例变量,它保存对FACULTY对象的引用。我正在尝试使用Composition并获得以下错误。请指教。
仅供参考:这是我遇到问题的代码片段。
public abstract class person { // getters setters }
public class faculty extends person {
public faculty(){super();}
public void someMethod(){ //some stuff "method calls" }
}
public class standalone {
//composition has-a relationship
public faculty faculty;
public void facultyInfo(){
// Compiler is complaining about this line
faculty.someMethod();}
}
public class MainOne {
public static void main(String[] args) {
standalone stand = new standalone();
//Compiler is complaining about this line
stand.facultyInfo();
}
}
例外:
Exception in thread "main" java.lang.NullPointerException
at first_.standalone.facultyStuff(standalone.java:22)
at first_.MainOne.main(MainOne.java:13)
答案 0 :(得分:2)
这意味着您的faculty
个实例中的null
成员为standalone
。
你需要初始化它。你可能想要例如将构造函数添加到standalone
并初始化faculty
。
public standalone(){
this.faculty = new faculty();
}
答案 1 :(得分:2)
教师变量未初始化。
答案 2 :(得分:2)
您声明了faculty
变量但从未初始化它。
public faculty faculty;
此faculty
尚未明确初始化。由于它是一个实例变量,Java会自动将其初始化为null
。
你可能想要做这样的事情:
public faculty faculty = new faculty();
或者在构造函数中初始化它:
public class standalone {
public faculty faculty;
public faculty() {
this.faculty = new faculty(); // Now faculty is initialized and useable
}
public void facultyInfo(){
faculty.someMethod();}
}
}