从静态方法访问另一个类的实例变量

时间:2013-11-26 05:26:57

标签: java instance static-methods

我有以下代码:

    public static boolean isRelated(Animal first, Animal second){
    boolean result=false;
    if(first(parentA).equals(second(parentA)))
        result=true;

    return result;
}

基本上,我需要能够从这个静态方法访问Animal类中的父A实例变量。

我理解,要在静态方法中访问实例变量,您需要创建一个对象,但我已经有2个引入。(Parent A和Parent B)

你能告诉我这里的问题是什么吗?

3 个答案:

答案 0 :(得分:0)

 if(first(parentA).equals(second(parentA)))
  
    

基本上,我需要能够从这个静态方法访问Animal类中的父A实例变量。

  

这不是访问实例成员的正确语法

应该是

 if(first.parentA.equals(second.parentA))

更多使用setter和getter来访问数据

public class Animal  {
    private String parentA;

 //  code

  public String getParentA() {
    return parentA;
  }

  public void setParentA(String parentA) {
    this.parentA = parentA;
  } 
}

} 

然后使用第if(first.getParentA().equals(second.getParentA()))

答案 1 :(得分:0)

要访问实例变量,您需要使用实例。只要您有一个,就不必在每次需要时创建它。

代码:

if(first.getParentA().equals(second.getParentA()))

在这种情况下,您需要确保在比较之前first.getParentA()不是null(否则您将获得NPE)

答案 2 :(得分:0)

静态方法在方法区域中创建,并且是第一个创建的方法。创建静态方法后,在堆中创建实例变量。因此,无法直接访问实例变量。始终使用对象来访问这些变量。