2 回答

TA贡献1886条经验 获得超2个赞
您的方法对我来说似乎有效,但我尽量避免直接实施Function
。主要原因是:命名.
我可以理解,如果一个类有一个有意义的名称(例如InOutMapFunction
),您可能不会觉得该方法也需要一个有意义的名称。不过,我更喜欢的名字InOutMapper.mapInToOut
来InOutMapFunction.apply
。
另外,如果你能想到的不止一个InOutMapper
,那就让它成为一个接口,让组件来实现它。
有些人可能认为,如果它们与现有的接口“对应”,那么创建自己的功能接口是不值得的,但我几乎从不后悔,尤其是在实际用例中,这会极大地影响可读性,例如比较:
SomeParticularTypeContextFinder
, 和Function<SomeParticularType, SomeParticularTypeContext>
.
这是我如何实施您的示例:
@Component
public class PlainInOutMapper implements InOutMapper {
@Override
public Out mapInToOut(In in) { .... }
}
@FunctionalInterface
interface InOutMapper {
Out mapInToOut(In in);
}
// example usage
@RestController
public class MyApi {
private List<In> someList;
private InOutMapper mapper;
public void foo() {
someList.stream()
.map(mapper::mapInToOut)
. // whatever
}
}

TA贡献1827条经验 获得超8个赞
您可以通过“查找用法设置”限制搜索范围(Windows 上的默认设置:CTRL+ALT+SHFT+F7)
这些设置适用于通过 ALT+F7 以及鼠标滚轮单击的搜索。也许将其限制为您当前的模块可以解决问题?
添加回答
举报