簡體   English   中英

如何訪問java中類構造函數內的數組列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM