2014-09-25 34 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

相关问题