Java可选:flatmap和OrelGet

Java可选:flatmap和OrelGet,java,java-stream,Java,Java Stream,我已经编码好了: Optional.ofNullable(this.cache.get(id)) .orElseGet(this.referenceService.get(id)); 问题是this.referenceService.get返回可选的 因此,我得到了以下信息: 从java 9开始,您可以使用OrelGetSupplier方法 从Java9开始,您可以使用 如果您使用的是Java 9,那么您可以访问Optional.or,它接受供应商 如果不是,则以下模式有效: Opti

我已经编码好了:

Optional.ofNullable(this.cache.get(id))
    .orElseGet(this.referenceService.get(id));
问题是this.referenceService.get返回可选的

因此,我得到了以下信息:


从java 9开始,您可以使用OrelGetSupplier方法


从Java9开始,您可以使用


如果您使用的是Java 9,那么您可以访问Optional.or,它接受供应商

如果不是,则以下模式有效:

Optional.ofNullable(this.cache.get(id))
    .orElseGet(() -> this.referenceService.get(id)
        .orElseThrow(()-> new RuntimeException("Expected service to return something")));

如果您使用的是Java 9,那么您可以访问Optional.or,它接受供应商

如果不是,则以下模式有效:

Optional.ofNullable(this.cache.get(id))
    .orElseGet(() -> this.referenceService.get(id)
        .orElseThrow(()-> new RuntimeException("Expected service to return something")));
我想你必须调用.orElseGet->this.referenceService.getid。我想你必须调用.orElseGet->this.referenceService.getid。