Java 从另一个类访问数组列表

Java 从另一个类访问数组列表,java,Java,嘿,我如何从另一个类访问arraylist?与在arraylist中调用对象方法一样,但从MasterControlPanel类调用?。非常感谢您的帮助。因为get(0)似乎不起作用 //example public class MasterControlPanel{ public static Building building = new Building(); public static void main(String[] args) { buildi

嘿,我如何从另一个类访问arraylist?与在arraylist中调用对象方法一样,但从MasterControlPanel类调用?。非常感谢您的帮助。因为get(0)似乎不起作用

//example

public class MasterControlPanel{
    public static Building building = new Building();

    public static void main(String[] args) {
        building.rooms.get(0).*whatever*
    }
}

public class Building
{
    public static Rooms rooms[] = new Rooms[4];
    private float outsideTemp;
    ArrayList rooms = new ArrayList();

    rooms.add(*new instance*); 
    rooms.add(*new instance*); 

    public Building() {
    }

}假设您的ArrayList实例是私有的,您不希望它是静态的(是吗?)。首先,创建一个getter方法,例如:

public ArrayList getRooms()
{ 返回室; }

现在,在另一个类上创建一个对象:

Building b=new Building();
并访问以下列表:

b.getRooms();
添加一个getter:

public class Building{

public static Rooms roomArray[] = new Rooms[4];
private float outsideTemp;
List<Room> rooms;

public Building(float temp){
    rooms = new ArrayList<Room>();
    rooms.add(new Room()); 
    rooms.add(new Room());
    outsideTemp = temp;
}

public List<Rooms> getRoomList() {
    return this.rooms;
}
}
旁白:为什么不定义
列表的类型?另外,请注意,我已将代码移到此类的构造函数中,并修复了名称冲突。另外,为什么使用
静态
数组?要考虑的事情

最后注意:向构造函数添加了
float
,以确保它已初始化。

如果您的
main()
方法确实是您的主方法,则您可能尚未初始化
ArrayList
。把那些
房间放在你知道它们会被调用的地方,然后再尝试访问列表

public class Building {
    public final ArrayList rooms = new ArrayList();

    public Building(){
        rooms.add(new Ballroom()); 
        rooms.add(new Library());
    }
}    

因为
rooms.add()
调用不在方法、构造函数或初始值设定器中,所以这不会编译(即使在替换了
*新实例*
位之后)。还有一个数组和一个名为
rooms
的数组列表。你能把它编辑成一个文件吗?你说不工作是什么意思?你能发布实际代码吗?在
建筑
中有两个同名变量:
房间
。这真的是你的代码吗?您真的有一个与实例变量同名的静态变量吗?什么不起作用?显示一些错误,也许?是的,对不起,这只是一个例子,我只需要知道get(0)是否应该工作?我当时有点着急,我应该更仔细地解释一下!很抱歉
public class Building {
    public final ArrayList rooms = new ArrayList();

    public Building(){
        rooms.add(new Ballroom()); 
        rooms.add(new Library());
    }
}