![](/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.