从另一个类访问Array List

时间:2012-03-05 22:34:31

标签: java

嘿我如何从另一个班级访问一个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() {
    }

}

3 个答案:

答案 0 :(得分:3)

添加一个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;
}
}

然后你可以这样做:

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

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

    }
}

除此之外:为什么不定义List的类型?另请注意,我已将代码移动到此类的构造函数中,并修复了名称冲突。另外,为什么static阵列?需要考虑的事情......

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

答案 1 :(得分:0)

让我们说你的ArrayList实例是私有的,你不希望它是静态的(是吗?)。首先,您创建一个getter方法,例如:

public ArrayList getRooms()

{   回程房; }

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

Building b=new Building();

并访问列表:

b.getRooms();

答案 2 :(得分:0)

如果您的main()方法确实是您的主要方法,那么您可能尚未初始化ArrayList。在尝试访问列表之前,将这些rooms.add(new Thing())调用放在您知道将被调用的位置。

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

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