在Java中8无法解析构造

罗希特:

我想创建一个克隆列表。我使用下面的代码片段,但我的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章