【发布时间】:2021-12-10 22:28:45
【问题描述】:
给定以下两种方法(不是可编译的代码,只是结构):
protected String mapABC(
Entity entity, @Context MappingContext mappingContext) {
return Optional.ofNullable(getSomething(entity))
.map(
x -> getBlah(x::getName))
.orElse(null);
}
protected String mapXYZ(
Entity entity, @Context MappingContext mappingContext) {
return Optional.ofNullable(getSomething(entity))
.map(
x -> getBlah(x::getFirstName))
.orElse(null);
}
我正在考虑避免重复逻辑时的外观,以便可以编写类似这样的结构:
protected String mapXYZ(
Entity entity, @Context MappingContext mappingContext) {
return xxx(getName());
}
protected String mapXYZ(
Entity entity, @Context MappingContext mappingContext) {
return xxx(getFirsName());
}
private String xxx(Methodreference m){
return Optional.ofNullable(getSomething(entity))
.map(
x -> getBlah(x::m))
.orElse(null);
}
x 的类型是:
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder(toBuilder = true)
public class DetailData {
private String name;
private String firstname;
}
我可以尝试任何想法吗?
【问题讨论】:
-
x的类型是什么? -
@Sweeper:我会在上面添加这个信息
标签: java lambda stream abstract