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