2013-11-26 220 views
0

我有以下代碼:從另一個類從靜態方法訪問實例變量

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

    return result; 
} 

基本上,我需要能夠從這個靜態方法訪問父實例變量是在動物類。

我的理解是,訪問一個靜態方法實例變量,你需要創建一個對象,但我已經有2帶來的。(父和母B)

難道你們告訴我是什麼問題這是?

+1

你的意思是'first.parentA'?您應該查看有關類和對象的基本Java教程。 –

+0

lol對不起,我最初做了這件事,但事後卻搞亂了,但無論如何也無濟於事。 – ymc331

+3

不要_mess about_。學習語法並使用它。 –

回答

0

爲了訪問實例變量,您需要使用一個實例。只要您有需要,您不必在每次需要時創建它。

併爲您的代碼:

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

在這種情況下,你需要確保比first.getParentA()null比較之前(否則你會得到NPE)中創建

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

基本上,我需要能夠訪問父實例變量是從這個靜態方法動物類。

這是不正確的語法來訪問實例成員

應該

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

更過度使用getter和setter方法來訪問數據,從而

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()))

0

靜態方法方法區域,並且是第一個被創建的。實例變量在創建靜態方法後在堆中創建。因此,直接訪問實例變量是不可能的。始終使用對象來訪問這些變量。