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

Java 如何从同一类中的其他方法访问ArrayList而不传递参数?,java,arraylist,scope,arguments,Java,Arraylist,Scope,Arguments,我试图让我的方法“add”访问在方法“Friends”中创建的ArrayList的内容,但是Java对我所做的不满意(范围问题?)。有没有一种不需要传递参数就能解决问题的方法 public class Friends { public Friends(float x, float y) { ArrayList<MyObject> arrayList = new ArrayList<MyObject>(); MyObj

我试图让我的方法“add”访问在方法“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]
        }
    }
}
公共课好友{
公共好友(浮动x,浮动y)
{       
ArrayList ArrayList=新的ArrayList();
MyObject[]好友列表=新的MyObject[20];
}
公共无效添加()
{       
对于(int i=0;i<20;i++){
//友人名单[i]
}
}
}

请注意,Friends是一个构造函数(如果我用的是正确的话)

显然,在这种情况下,您应该使用所谓的“对象变量”,或者简单地说是类的-fields。您应该将变量
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(...).
        }
    }
}
公共课好友{
列表数组列表;
公共好友(浮动x,浮动y)
{       
arrayList=新的arrayList();
MyObject[]好友列表=新的MyObject[20];
}
公共无效添加()
{       
对于(int i=0;i<20;i++){
//arrayList.add(…)。
}
}
}

显然,在这种情况下,您应该使用所谓的“对象变量”,或者简单地说是类的-fields。您应该将变量
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(...).
        }
    }
}
公共课好友{
列表数组列表;
公共好友(浮动x,浮动y)
{       
arrayList=新的arrayList();
MyObject[]好友列表=新的MyObject[20];
}
公共无效添加()
{       
对于(int i=0;i<20;i++){
//arrayList.add(…)。
}
}
}
让你的变量成为朋友类的成员变量:

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]
        }
    }
}
公共课好友{
ArrayList ArrayList;
MyObject[]朋友列表;
公共好友(浮动x,浮动y)
{       
arrayList=新的arrayList();
friendList=新的MyObject[20];
}
公共无效添加()
{       
对于(int i=0;i<20;i++){
//友人名单[i]
}
}
}
让你的变量成为朋友类的成员变量:

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]
        }
    }
}
公共课好友{
ArrayList ArrayList;
MyObject[]朋友列表;
公共好友(浮动x,浮动y)
{       
arrayList=新的arrayList();
friendList=新的MyObject[20];
}
公共无效添加()
{       
对于(int i=0;i<20;i++){
//友人名单[i]
}
}
}

你的猜测是正确的。这里的问题是范围界定。您正在构造函数中创建局部变量
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]
    }
}
公共课好友{
ArrayList ArrayList;=新的ArrayList();
MyObject[]好友列表;=新的MyObject[20];
公共好友(浮动x,浮动y)
{       
this.arrayList=新的arrayList();
this.friendList=新的MyObject[20];
}
公共无效添加()
{       
对于(int i=0;i<20;i++){
//友人名单[i]
}
}

}你的猜测是正确的。这里的问题是范围界定。您正在构造函数中创建局部变量
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]
    }
}
公共课好友{
ArrayList ArrayList;=新的ArrayList();
MyObject[]好友列表;=新的MyObject[20];
公共好友(浮动x,浮动y)
{       
this.arrayList=新的arrayList();
this.friendList=新的MyObject[20];
}
公共无效添加()
{       
对于(int i=0;i<20;i++){
//友人名单[i]
}
}

}

friendList应该是实例字段而不是构造函数中的局部变量friendList应该是实例字段而不是构造函数中的局部变量“Global”有误导性。它是一个实例或成员变量。你完全正确。我将它更改为实例变量。谢谢,“全球”是误导。它是一个实例或成员变量。你完全正确。我将它更改为实例变量。谢谢