如何从 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 Optional transform 这样的东西,但我不确定如何用 guava optional 链接这样的东西?
// 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 和方法引用,因此您将不得不继续使用匿名 类 实现 函数接口:
xx.transform(new Function<Context, Entity>() {
@Override
public Entity apply(Context c) {
return c.getEntity();
}
})
等等
我有以下使用 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 Optional transform 这样的东西,但我不确定如何用 guava optional 链接这样的东西?
// 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 和方法引用,因此您将不得不继续使用匿名 类 实现 函数接口:
xx.transform(new Function<Context, Entity>() {
@Override
public Entity apply(Context c) {
return c.getEntity();
}
})
等等