试图将一些旧代码转换为功能样式
旧样式:
if(SomeEnum.A.name().equalsIgnoreCase(someObject.getX().orElse(null)) && someObject.isSomethingTrue()) {
System.out.println("It happnened " + someObject.toString());
}
尝试:
someObject.getX().filter(SomeEnum.A.name()::equalsIgnoreCase)
.ifPresent(()-> System.out.println("It happnened " + someObject.toString());
但是,我得到了cannot infer functional interface type
错误。如果对象的属性X属于枚举,我希望仅打印该语句。通常,对于谓词,我将具有类似(obj -> obj.doSomething())
的名称;但是,由于在这种情况下,我只想打印,所以很难解决它。
ifPresent()
需要一个Consumer<String>
,即以字符串作为参数的函数。但是,您传递的lambda没有任何参数。替换为
.ifPresent(unused -> System.out.println("It happnened " + someObject.toString()))