2012-03-05 19 views
-2

他のクラスの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

これは 'rooms.add()'の呼び出しは、メソッド、コンストラクタ、または初期化子に含まれていないので、(あなたは '*新しいインスタンスが*'ビットを交換しても一度)コンパイルされません。また、配列と 'rooms'というArrayListの両方があります。これを編集して[SSCCE](http://sscce.org)にすることはできますか? – DNA

+0

働いていないということはどういう意味ですか?実際のコードを投稿できますか? 'Building'には同じ名前の変数が2つあります:' rooms'。 – hmjd

+0

これはあなたのコードですか?実際にインスタンス変数と同じ名前の静的変数がありますか?何がうまくいかないの?いくつかのエラーを表示しますか? –

答えて

3

はゲッターを追加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のインスタンスがプライベートであり、あなたが(あなたのですか?)それは静的になりたいいけないと言うことができます。まず、あなたのようなgetterメソッドを作成するすべての:

public ArrayList getRooms() 

{ リターン部屋。その後

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

次のことができます。他のクラスに }

今、あなたがオブジェクトを作成します。

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()); 
    } 
}  
関連する問題