[英]Calling method from another class which relates to Arraylist
我正在構建一個具有Room
類的應用程序,該類是抽象的,而Standard
類則繼承自Room
。 然后,我創建了一個Hostel
類。 在Hostel
類中是可以添加ArrayList<Room> rooms
。 我在Hostel
類中創建了一個顯示所有可用房間的方法,但是當我嘗試在另一個類( MainGUI
)中實例化此方法時,什么也沒有顯示。 據我所知,這是因為每次單擊按鈕時我都會創建一個新旅館,但我想知道如何傳遞數據,而不是每次都創建一個新旅館。 以下是相關的代碼片段。
Hostel Class
public Hostel()
{
rooms = new ArrayList<Room>();
}
public void showAvail()
{
for (Room room : rooms)
{
if (room.available == true)
{
theString = room.getRoomData() + "\n";
//System.out.println("Available Rooms" + "\n" + theString);
JOptionPane.showMessageDialog(null,theString);
}
}
}
public void addRoom(Room theRoom)
{
rooms.add(theRoom);
}
MainGUI Class
roomsFreeB.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Hostel host = new Hostel();
host.showAvail();
}
});
任何幫助,將不勝感激
除非您省略了Hostel host = new Hostel();
之間的代碼Hostel host = new Hostel();
和host.showAvail();
,您從不向旅館添加任何房間,因此沒有可供顯示的房間(或任何房間)。 您需要在創建host
之后並且在showAvail
之前添加房間作為host
,或者創建一個Hostel
實例變量,將其填充到某個地方,然后在其上調用showAvail
。
最好看看您如何在Hostel內初始化房間 。 如果只想初始化一次Hostel,請在Listener之外進行。 在這種情況下,它一定不能是MainGUI中的字段。
public void actionPerformed(ActionEvent e)
{
Hostel host = new Hostel();
host.showAvail();
}
在前面的代碼中,創建對象,然后在方法完成后銷毀。 變量宿主是局部變量,因此僅在方法執行期間存在。
根據您要執行的操作,應該在main方法內聲明host變量,或者在main方法內再次聲明hostel的數組。
由於您每次都創建新的旅館。 我想ArrayList中會有Room
。
您需要在actionPerformed之外創建Hostel對象。 並且在您的情況下,它應該只創建一次。 在此創建的Hostel對象上,您將添加Room
對象。
如果問題是在哪里做..它留給您。 它在您的設計上。
例如可以。
您可以創建一個稱為ABC
的類,在其中可以創建宿舍對象。 編寫一個名為getHostel()的靜態方法。 然后調用ABC.getHostel()
是的,您沒錯,每次執行操作都會創建一個新的旅館,因此與旅館關聯的房間列表也會被創建。
單擊該按鈕,您將知道要顯示哪個旅館(可能正在讀取應用程序數據庫或其他內容),以防萬一這是您旅館第一次沒有空房間,否則一旦您閱讀了旅館信息,您還將知道關於屬於旅館的房間的信息,然后可以通過構造函數或setter方法將其傳遞給您的旅館對象。
程式碼片段:
createHostel(String hostelName) {
//read from database
//No hostel with hostelname found create a new hostel else if hostel is found send the same (by this time hostel object would have room information also
}
你的行動
public void actionPerformed(ActionEvent actionEvent) {
//MyFactory.getHostel(String hostelName)
//Once you have hostel object call showAvail on it, if its new you will get nothing else you will get all the rooms available
}
希望這能給您一些見識。
您的問題正是您所想的,每次單擊按鈕都在創建一個新的ArrayList,這樣您就永遠看不到數據。 您應該首先在MainGUI
類中創建一個hostel
對象,
private Hostel hostel;
這將允許引用先前輸入的信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.