如何从同一个类中的其他方法访问ArrayList而不传递参数?

时间:2015-11-07 20:12:55

标签: java arraylist scope arguments

我试图让我的方法"添加"访问方法" Friends"中创建的ArrayList的内容,但Java对我正在做的事情(范围问题?)不满意。有没有办法解决问题而不必传递参数?

public class Friends {
public Friends(float x, float y)
    {       
        ArrayList<MyObject> arrayList = new ArrayList<MyObject>(); 
        MyObject[] friendList = new MyObject[20];

    }

public void add()
    {       
        for (int i = 0; i < 20; i++) {
            //friendList[i]
        }
    }
}

请注意,朋友应该是一个构造函数(如果我正确使用该单词)

3 个答案:

答案 0 :(得分:4)

显然,对于这种情况,您应该使用这样的“对象变量”,或者简单地说 - 类的字段。您应该将变量arrayList作为字段的一部分:

public class Friends {
List<MyObject> arrayList;
public Friends(float x, float y)
    {       
        arrayList = new ArrayList<MyObject>(); 
        MyObject[] friendList = new MyObject[20];

    }

public void add()
    {       
        for (int i = 0; i < 20; i++) {
            //arrayList.add(...).
        }
    }
}

答案 1 :(得分:1)

制作好友类的变量成员变量

public class Friends {
ArrayList<MyObject> arrayList;
MyObject[] friendList;
public Friends(float x, float y)
    {       
        arrayList = new ArrayList<MyObject>(); 
        friendList = new MyObject[20];

    }

public void add()
    {       
        for (int i = 0; i < 20; i++) {
            //friendList[i]
        }
    }
}

答案 2 :(得分:1)

你的猜测是正确的。这里的问题是范围界定。您正在构造函数中创建局部变量arrayList,该变量仅在构造函数中可用。

你应该将它声明为一个像这样的实例变量:

public class Friends {

    ArrayList<MyObject> arrayList; = new ArrayList<MyObject>(); 
    MyObject[] friendList; = new MyObject[20];

    public Friends(float x, float y)
    {       
        this.arrayList = new ArrayList<MyObject>(); 
        this.friendList = new MyObject[20];
    }

public void add()
{       
    for (int i = 0; i < 20; i++) {
        //friendList[i]
    }
}

}