我试图让我的方法"添加"访问方法" 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]
}
}
}
请注意,朋友应该是一个构造函数(如果我正确使用该单词)
答案 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]
}
}
}