![](/img/trans.png)
[英]Java - How to allow all methods of a class to access an array initialized in constructor?
[英]How do I access an array list inside of a class constructor in java?
我構建了一個包含以下內容的Purse
類:
public Purse(){
ArrayList<String> coins = new ArrayList();
}
我的函數是向對象添加字符串:
public void addCoin(String coinName){
coins.add(coinName);
}
這個想法是每個Purse對象可以包含一個字符串列表。 但是,我無法使用我的方法訪問ArrayList<String> coins
。
例如,我寫這個方法來反轉字符串的順序
public void reverse(){
for (int j = coins.size() - 2; j > -1; j--){
coins.add(coins.get(j));
coins.remove(j);
}
調用無法找到符號coins
的錯誤。
如何使我的方法可以訪問我在構造函數中創建的數組列表? 對於反向方法,我是否需要針對void addCoin
方法或this.coins.add(this.coins.get(j))
對this.coins.add(coinName)
說些什么?
您需要在構造函數之外移動coins
聲明:
private List<String> coins;
public Purse(){
coins = new ArrayList<String>();
}
這將使coins
成為您班級的私人領域,使其可以從Purse
所有非靜態方法訪問。 目前,您正在創建一個局部變量coins
,當構造函數退出時,這些coins
變得無法訪問。
將ArrayList
聲明為構造函數之外的字段。 還使用List
接口而不是ArrayList
。
public class Purse{
private List<String> coins= new ArrayList<String>();
public Purse(){
}
}
在構造函數內聲明時,列表的范圍僅限於構造函數方法。 聲明為類中的字段, List
的所有方法都可以訪問List
。
通過在構造函數中聲明coins
變量,您將變量置於構造函數塊的本地。 一旦你在區塊外,那么coins
變量將不再可訪問。
因此,將coins
聲明為您的Purse
類的實例變量。
例如:
public class Purse {
private List<String> coins;
public Purse() {
coins = new ArrayList<String>();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.