繁体   English   中英

如何从java.util.Optional方法调用链移植到Guava Optional?

[英]How to port from java.util.Optional method call chaining to Guava Optional?

我有以下使用java.util.optional的内容

// this works fine for java.util.Optional
Optional <Context> xx = Optional.ofNullable(x);
Optional<DateRange> dates = xx.map(Context::getEntity).map(Entitiy::getDates);

但是,我需要将其转换为使用番石榴的可选。 我尝试了类似guava可选的转换,但是我不确定如何用guava可选的链接这样的东西?

// guava...how can I chain method calls as such...this fails of course
Optional <Context> xx = Optional.of(x);
Optional<DateRange> dates = xx.get().getEntity().getDates();

任何帮助是极大的赞赏!

几乎完全一样。 只是方法的名称不同,但是用法完全相同。

请记住,Guava的Optional.of()和Java8的Optional.ofNullable()是不同的。 您应该改用Guava的Optional.fromNullable()

Guava的Optional.transform()等于Java8的Optional.map()

Optional<Context> xx = Optional.fromNullable(x);
Optional<DateRange> dates = xx.transform(Context::getEntity).transform(Entitiy::getDates);

如果您未使用Java8,则将无法使用lambda和方法引用,因此必须继续使用实现Function接口的匿名类:

xx.transform(new Function<Context, Entity>() {
        @Override
        public Entity apply(Context c) {
            return c.getEntity();
        }
    })

等等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM