无法使用Composition访问类方法?

时间:2014-01-23 20:11:39

标签: java methods nullpointerexception main composition

在下面的示例中,我遇到了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)

3 个答案:

答案 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();}
    }
}