java无法推断功能接口类型

问题描述 投票:0回答:1

试图将一些旧代码转换为功能样式

旧样式:

 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())的名称;但是,由于在这种情况下,我只想打印,所以很难解决它。

java functional-programming
1个回答
0
投票

ifPresent()需要一个Consumer<String>,即以字符串作为参数的函数。但是,您传递的lambda没有任何参数。替换为

.ifPresent(unused -> System.out.println("It happnened "  + someObject.toString()))
© www.soinside.com 2019 - 2024. All rights reserved.