Java &引用;“展平”;在番石榴和爪哇7中可选
我正在使用guava 20.0和Java7。 我有番石榴的功能Java &引用;“展平”;在番石榴和爪哇7中可选,java,guava,Java,Guava,我正在使用guava 20.0和Java7。 我有番石榴的功能 public static Function<String, Optional<String>> UP = new Function<String, Optional<String>>() { @Override public Optional<String> apply(String f) { if (f.equals("
public static Function<String, Optional<String>> UP
= new Function<String, Optional<String>>() {
@Override
public Optional<String> apply(String f) {
if (f.equals("test"))
return Optional.absent();
return Optional.of(f.toLowerCase());
}
};
但在这两种情况下,我如何接收可选的.缺席()。可能有一些东西类似于可选的map函数。已经有人建议在Guava的
Optional
中添加此“map”函数。但是,这是因为Optional
被认为是遗留的,将被冻结
最好是编写一个实用函数,类似于:
public static Optional<F> transform(Optional<T> optional, Function<T, F> transformer) {
try {
return optional.transform(transformer);
catch (NullPointerException e) {
return Optional.<F>.absent()
}
}
公共静态可选转换(可选,函数转换器){
试一试{
返回可选。转换(变压器);
捕获(NullPointerException e){
返回可选..缺席()
}
}
我认为他的最佳选择是升级到Java 8或Java 11;-)似乎我找到了解决方案
strNormal = Optional.of(Optional.absent())
str = Optional.absent()
public static Optional<F> transform(Optional<T> optional, Function<T, F> transformer) {
try {
return optional.transform(transformer);
catch (NullPointerException e) {
return Optional.<F>.absent()
}
}