使用Guava的一个问题Optional
类型作为方法的参数是你不能简单地写
// method declaration
public void foo(Optional<String> arg);
// compiler error
foo(Optional.absent());
由于类型推断失败,但必须显式添加类型:
// real method call
foo(Optional.<String> absent());
我怎样才能避免它?
如果您正在处理一小部分Optional<>
类型(例如,主要是字符串或少数其他类型),只需创建一些为您绑定类型参数的辅助方法:
public final class AbsentValues {
public static Optional<String> absentString() {
return Optional.<String>absent();
}
}
您甚至可以静态导入这些以生成更清晰的代码:
import static AbsentValues.*;
...
foo(absentString());
对于不太常见的Optional<>
类型,只需显式指定类型参数即可。它可能不漂亮,但它是正确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)