Roh*_*hit 1 java collections java-8 java-stream
我想创建一个克隆列表。我正在使用以下代码段,但是即使MyClass具有默认构造函数,我的IDE也会显示“无法解析构造函数”的编译错误。
List<MyClass> clonedList =
myClassList.stream().map(MyClass::new).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我是流媒体新手,如果我的语法错误,请帮助我。
MyClass::new仅当您的类具有一个采用单个参数(其类型为的元素类型)的构造函数时,该函数才能在这种情况下工作Stream。无参数的构造函数将无法工作。
myClassList.stream().map(MyClass::new)...
Run Code Online (Sandbox Code Playgroud)
表现为
myClassList.stream().map(e -> new MyClass(e))...
Run Code Online (Sandbox Code Playgroud)
由于myClassList是MyClass实例列表,因此这意味着需要以下签名的构造函数才能使方法引用work- MyClass (MyClass other)。
您仍然可以将无参数构造函数与以下lambda表达式一起使用:
myClassList.stream().map(e -> new MyClass())...
Run Code Online (Sandbox Code Playgroud)
当然,这毫无意义,因为它忽略了的原始元素Stream。
由于您的目标是克隆List,因此需要一个复制构造函数:
public MyClass (MyClass other) {
// copy the properties of other to this instance
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |