2015-10-15 44 views
1

我有一個嵌套的ArrayListJava的嵌套的ArrayList返回Object

ArrayList<ArrayList<MenuItem>> MenuList = ArrayList<ArrayList<MenuItem>>() 

菜單項是包含項目名稱和任務(INT)我的課。我使用幾個按鈕遍歷我的Menu,當我按下「enter」鍵時,我想訪問當前選擇的MenuItem。

代碼如下;

// enter button pressed 
if(buttonStateEnter != lastButtonStateEnter){ 
    // changes 
    // get current menu 
    ArrayList currentMenuList = MenuList.get(currentMenu); 

    // get menuItem obj 
    Object test = currentMenuList.get(0); 

    System.out.println(test.getClass()); 

    // get the task (int) 
    //int changeTask = subNest.getTask(); 

    lastButtonStateEnter = buttonStateEnter; 
    redraw = true; 
} 

我想創建MenuItem測試而不是對象測試,因爲我無法以這種方式訪問​​我的方法。 test.getClass()返回類MenuItem。把MenuItem測試代碼編譯與錯誤

java.lang.Object cannot be converted to MenuItem 
+0

類型轉換你的列表到實際類型 – SacJn

+0

好吧,你確實保存了一個rawtype的MenuList#get',它基本上只用於Object。你不應該那樣做,而應該使用通用的 – SomeJavaGuy

+0

什麼是MenuList? –

回答

3

List<MenuItem> Menu = new ArrayList<MenuItem>()應該幫助。

,或者必須get操作類型轉換它如下:
(MenuItem)Menu.get(

但第二個選項應給你的警告,以確保您類型轉換爲正確的類型

+0

雖然我正在使用多個菜單;菜單包括MainMenu,subMenu等。 – nlreturns

+0

然後如果它們互相兼容,最好將其聲明爲**超級類** – SacJn

+0

謝謝!類型轉換修復了這個問題 – nlreturns

1
// enter button pressed 
if(buttonStateEnter != lastButtonStateEnter) { 
    // changes 
    // get current menu 
    ArrayList<MenuItem> currentMenuList = MenuList.get(currentMenu); 

    // get menuItem obj 
    MenuItem test = currentMenuList.get(0); 

    System.out.println(test.getClass()); 

    // get the task (int) 
    //int changeTask = subNest.getTask(); 

    lastButtonStateEnter = buttonStateEnter; 
    redraw = true; 
} 
+0

當聲明變量時,會暗示不依賴於實現。 – SacJn

+0

MenuItem無法轉換爲java.util.List nlreturns

+0

現在可以完美地工作了。 –

-1
// enter button pressed 
if(buttonStateEnter != lastButtonStateEnter){ 
    // changes 
    // get current menu 
    ArrayList <MenuItem> currentMenuList = MenuList.get(currentMenu); 

    // get menuItem obj 
    MenuItem test = currentMenuList.get(0); 

    System.out.println(test.getClass()); 

    // get the task (int) 
    //int changeTask = subNest.getTask(); 

    lastButtonStateEnter = buttonStateEnter; 
    redraw = true; 
} 

This should work...