2014-09-25 35 views
3

我有一些Model類,我試圖用它們聲明一個列表,但是我得到了Array initializer is not allowed here。什麼是簡單的解決方法?數組初始值設定在這裏是不允許的

... 
public class M1 extends Model {} 
public class M2 extends Model {} 

... 
List<Model> mObj = new ArrayList<Model>({M1, M2}) //expression expected 
... 

回答

5

的Java 8,你可以利用流API的:

List<String> mObj = Stream.of("m1","m2","m3").collect(Collectors.toList()); 

前的Java 8簡單地使用:

List<Model> mObj = new ArrayList<>(Arrays.asList(m1, m2, m3)); 


有關的信息,這見:

+0

+1爲正確的答案原來的問題。 – Bala 2014-09-25 13:09:56

5

您可以使用Arrays.asList將返回List<Model>,然後你可以將它傳遞給ArrayList構造。 注意,如果你直接分配List回報由Arrays.asListList<Model>然後調用方法一樣add()將拋出UnsupportedOperationException因爲Arrays.asList回報的AbstractList

你應該改變

List<Model> mObj = new ArrayList<Model>({M1, M2}) //expression expected 

List<Model> mObj = new ArrayList<Model>(Arrays.asList(M1, M2)); 

因爲類ArrayList的構造函數可以採用Collection<? extends Model>

+0

+1了原來的問題。我現在修改了它 – Bala 2014-09-25 13:09:03

+0

@Bala,List mObj = new ArrayList (Arrays.asList(M1,M2));應該管用。你有什麼問題嗎? – sol4me 2014-09-25 13:15:18

+0

我得到'表達預期' – Bala 2014-09-25 13:16:45

相關問題