Java 作为参数传递给ArrayList时,此处不允许使用数组初始值设定项

Java 作为参数传递给ArrayList时,此处不允许使用数组初始值设定项,java,Java,我有一些模型类,我正试图用它们声明一个列表,但我得到的数组初始值设定项在这里是不允许的。什么是简单的工作 ... public class M1 extends Model {} public class M2 extends Model {} ... List<Model> mObj = new ArrayList<Model>({M1, M2}) //expression expected ... 。。。 公共类M1扩展了模型{} 公共类M2扩展了模型{} ...

我有一些
模型
类,我正试图用它们声明一个列表,但我得到的
数组初始值设定项在这里是不允许的
。什么是简单的工作

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

...
List<Model> mObj = new ArrayList<Model>({M1, M2}) //expression expected
...
。。。
公共类M1扩展了模型{}
公共类M2扩展了模型{}
...
List mObj=new ArrayList({M1,M2})//应为表达式
...
您可以使用它返回
列表
,然后您可以将其传递给的构造函数注意如果您直接将
列表
通过
数组返回。asList
分配给
列表
,则调用
add()
等方法将抛出
不支持操作异常
,因为Arrays.asList返回的
抽象列表

你应该改变

List<Model> mObj = new ArrayList<Model>({M1, M2}) //expression expected
List mObj=new ArrayList({M1,M2})//应为表达式

List mObj=newarraylist(Arrays.asList(M1,M2));

由于类
ArrayList
的构造函数可以在Java8中获取
Collection,因此您可以使用Streams API:

List mObj=Stream.of(“m1”、“m2”、“m3”).collect(collector.toList());
Java 8之前的版本只需使用:

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

有关这方面的信息,请参见:


@Bala,List mObj=新的数组列表(Arrays.asList(M1,M2));应该有用。您收到任何问题吗?我得到了预期的
表达式
List<String> mObj = Stream.of("m1","m2","m3").collect(Collectors.toList());
List<Model> mObj = new ArrayList<>(Arrays.asList(m1, m2, m3));