2012-03-05 3 views
-2

Эй, как мне получить доступ к архаристу из другого класса? как в вызове метода объектов внутри 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

Это не скомпилируется (даже если вы замените бит '* new instance *'), поскольку вызовы 'rooms.add()' не находятся в методе, конструкторе или инициализаторе. Также yo имеют как массив, так и ArrayList, называемый 'rooms'. Можете ли вы изменить это, чтобы сделать его [SSCCE] (http://sscce.org)? – DNA

+0

Что вы имеете в виду, если не работаете? Можете ли вы опубликовать фактический код? В 'Строке':' комнаты' есть две переменные с одинаковым именем. – hmjd

+0

Действительно ли это ваш код? У вас действительно есть статическая переменная с тем же именем, что и переменная экземпляра? Что не работает? Показать некоторые ошибки, может быть? –

ответ

3

Добавить поглотитель:

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; 
} 
} 

Тогда вы можете do:

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

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

    } 
} 

Кроме того: почему вы не определяете тип своего List? Кроме того, обратите внимание, что я переместил код в конструктор для этого класса и столкновений с фиксированным именем. Кроме того, почему массив static? О чем подумать ...

Последнее примечание: добавлено float конструктору, чтобы обеспечить его инициализацию.

+0

Большое спасибо! :) – user969729

0

Допустим, что ваш ArrayList экземпляр является частным, и вы не хотите, чтобы быть статическими (не так ли?). Прежде всего, нужно создать метод геттер, такие как:

public ArrayList getRooms() 

{ возвратных комнат; }

С другой класс сейчас, вы создаете объект:

Building b=new Building(); 

и получить доступ к списку:

b.getRooms(); 
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()); 
    } 
}  
Смежные вопросы