繁体   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