我想创建一个克隆列表。我使用下面的代码片段,但我的IDE呈现出编译错误为“无法解析的构造”,即使MyClass
有一个默认的构造函数。
List<MyClass> clonedList =
myClassList.stream().map(MyClass::new).collect(Collectors.toList());
我是新来的流,请帮助我,如果我的语法是错误的。
MyClass::new
仅在这方面的工作,如果你的类有一个构造函数,其类型为的元素的类型的单个参数Stream
。无参数的构造函数将无法正常工作。
myClassList.stream().map(MyClass::new)...
表现为
myClassList.stream().map(e -> new MyClass(e))...
由于myClassList
是清单MyClass
的情况下,这意味着以下签名的构造将在订单所需的方法引用到工作- MyClass (MyClass other)
。
您仍然可以使用参数的构造函数具有以下lambda表达式:
myClassList.stream().map(e -> new MyClass())...
当然,这没有什么意义,因为它忽略的原始元素Stream
。
因为你的目标是克隆List
,你需要一个拷贝构造函数:
public MyClass (MyClass other) {
// copy the properties of other to this instance
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句