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