是否可以将参数化的构造方法作为对map
的方法引用?
我的代码中有一个设施看起来像这样
items.stream()
.map(it -> new LightItem(item.getId(), item.getName())
.collect(Collectors.toList());
我的
items
列表包含几个Item
对象Item
id, name, reference, key...
而
LightItem
只有两个字段LightItem
id, name
如果可以做这样的事情会很好
items.stream().map(LightItem::new).collect(Collectors.toList())
最佳答案
这里只有一种使用构造函数的方法,您必须向LightItem
类添加一个新的构造函数:
public LightItem(Item item) {
this.id = item.getId();
this.name = item.getName();
}
这将允许您使用编写的代码:
items.stream().map(LightItem::new).collect(Collectors.toList())
如果您真的不想向
LightItem
添加新的构造函数,则可以采用以下方法:class MyClass {
public List<LightItem> someMethod() {
return items.stream()
.map(MyClass::buildLightItem)
.collect(Collectors.toList());
}
private static LightItem buildLightItem(Item item) {
return new LightItem(item.getId(), item.getName());
}
}