此处不允许使用数组初始值设定项

时间:2014-09-25 13:01:08

标签: java

我有一些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
...

2 个答案:

答案 0 :(得分:7)

Java 8 中,您可以使用 Streams API

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

Pre Java 8 只需使用:

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


有关此信息,请参阅:

答案 1 :(得分:5)

您可以使用Arrays.asList返回List<Model>,然后将其传递给ArrayList的构造函数。 注意如果您List直接将Arrays.asList分配给List<Model>,则调用add()之类的方法会抛出UnsupportedOperationException因为数组。 asList返回&#39; s 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>