Optional<User>.ifPresent()需要
Consumer<? superUser>作为参数。您正在向其传递类型为void的表达式。因此,它不会编译。
使用者应被实现为lambda表达式:
Optional<User> user = ...user.ifPresent(theUser -> doSomethingWithUser(theUser));
甚至更简单,使用方法参考:
Optional<User> user = ...user.ifPresent(this::doSomethingWithUser);
这基本上与
Optional<User> user = ...user.ifPresent(new Consumer<User>() { @Override public void accept(User theUser) { doSomethingWithUser(theUser); }});想法是
doSomethingWithUser()仅当用户在场时才执行方法调用。您的代码直接执行方法调用,并尝试将其无效结果传递给
ifPresent()。



