2017-05-11 321 views
0

問題的基本原因在於此,我們創建了一個對象ArrayLists數組,因爲我們不完全知道我們將在那裏保存什麼,直到後來,但我們知道如何(我們必須使它),所以構造函數方法的默認創建將其初始化爲
private List<Object> collection但後來某些輸入會改變它,將其稱爲字符串,因此位置上的AL應該類似collection[i] = new ArrayList<String>(),但編譯器說甚至連ArrayList<String> cannot be converted into ArrayList<Object>以爲我很確定String,Integer等從類繼承Object
任何人都可以告訴我我做錯了什麼?更改ArrayList的類型

+0

'collection [i]'是什麼?只需向集合添加' –

+0

集合[]是將用ArrayLists填充的數組,但它們拒絕更改類型 –

+0

爲什麼不將'List '更改爲'列表'?或'ArrayList '到'ArrayList '?它們需要是相同的類型,否則你需要使用邊界,比如'List <?擴展Object>'。 – 4castle

回答

0

1)collection[i]是一個Array

2)如果你想它這樣寫:

List<Object> collection; collection = new ArrayList<String>();

,你會得到incompatible types: ArrayList<String> cannot be converted to List<Object>

你不能隱蔽字符串目的。如果你想要它,你需要將它創建爲一個字符串列表。如果你不知道你需要什麼類型,只要你知道就可以創建它。如果用戶選擇它,請按如下方式進行切換:

switch (entry) { 
     case 1: { 
      List<String> collection = new ArrayList<>(); 
      break; 
     } 
     case 2: { 
      List<Integer> collection = new ArrayList<>(); 
      break; 
     } 
     case 3: { 
      List<Character> collection = new ArrayList<>(); 
     } 

    }