在Java8中使用ifPresentOverless的一个可选选项的奇怪行为(对我来说)

在Java8中使用ifPresentOverless的一个可选选项的奇怪行为(对我来说),java,lambda,java-8,Java,Lambda,Java 8,我有以下代码: Optional<Person> oldestPerson = personenListe.stream().collect(Collectors.reducing(maxAge)); Consumer<Person> personPrinter = p -> System.out.println("The oldest is : " + p.getName()); Runnable noPersonMessagePrinter = () ->

我有以下代码:

Optional<Person> oldestPerson = personenListe.stream().collect(Collectors.reducing(maxAge));
Consumer<Person> personPrinter = p -> System.out.println("The oldest is : " + p.getName());
Runnable noPersonMessagePrinter = () -> System.out.println("There is no person");
oldestPerson.ifPresentOrElse(personPrinter,noPersonMessagePrinter );
我的IDE将ifPresentOrElse强调为红色,因为它没有找到符号,但从我的观点来看,它应该是正确的


猜猜看?

ifPresentOrElse方法是在Java 9中添加的,因此在Java 8中不可用。这就是IDE将其标记为无效的原因:该方法在Java 8中不存在。

ifPresentOrElse仅在Java 9中有效,但如果您使用的是Spring Boot,use可以在Optionals类中找到ifPresentOrElse方法。它为您提供相同的功能。

顺便说一句,IfPresentorese java9@manfromnowhere如果OP使用Java 8…+1作为示例性的精确问题标题,那么这似乎就是这里的确切问题。此外,您还有简短、可验证的示例和错误的精确描述