2013-07-22 154 views
1
public class Test(){ 
    public List makeList(){ 
    //some code 
    .... 
    double density = mass/vol; 
    return mylist; 
    } 
} 

即使我只返回一個列表,我怎樣才能參考density?在Python中,我可以撥打self.density如何在Java中使用公共方法訪問變量?

我知道我可以創建另一個類Pair<List, Double>但我寧願不要那麼做,因爲混亂。

+1

「在Python我可以叫'self.density'」。不,你不能,除非它是對象'Test'的成員。 – Joe

+1

Python和Java在這裏的行爲是相同的(假設你在談論該類的公共領域) – Joe

+1

請參閱變量作用域和生命週期以供參考。 –

回答

6

在Python,我可以叫self.density

不,這是不一樣的。你的代碼中定義的是本地變量 - 其範圍限於makeList()

如果您想從其他方法引用它,你可以把它的實例變量(這是你在用Python self做什麼):

public class Test { 
    private double density = 0.0; 

    public List makeList(){ 
     //some code 
     .... 
     density = mass/vol; 
     return mylist; 
    } 
} 
+1

您可能也想修復'public class Test()'(如[Manuel指出](http://stackoverflow.com/a/17784738/56285))。 – Jonik

+0

@Jonik謝謝 - 一直專注於範圍相關的問題:) –

+0

感謝您的解釋,我最近纔開始學習Java。 – Jean

0

需要聲明density爲成員方法之外的類Test,只是在方法內分配它。如果在方法中聲明它,則無法在其他地方訪問它。

像這樣:

public class Test{ 
    private double density; 

    public List makeList(){ 
     //some code 
     .... 
     density = mass/vol; 
     return mylist; 
    } 
} 
3

densityTest類的實例成員。

public class Test { // NO open/close parenthesis here! 

    private double density; 

    public List makeList() { 
    //some code 
    .... 
    this.density = mass/vol; 
    return mylist; 
    } 

    public double getDensity() { 
    return this.density; 
    } 

} 

然後調用:

Test test = new Test(); 
List myList = test.makeList(); 
double density = test.getDensity();