Java 8 在Java8中,是否有一个util函数将抛出异常的供应商转换为可选的?
我正在使用vavr,发现在Java 8 在Java8中,是否有一个util函数将抛出异常的供应商转换为可选的?,java-8,optional,vavr,Java 8,Optional,Vavr,我正在使用vavr,发现在选项中没有这样的util,在java8的任何其他包中是否有类似的方便util public final class Utils { public static <T> Option<T> optionOfThrowableSupplier(Supplier<T> supplier){ try { T x = supplier.get(); return Optio
选项中没有这样的util,在java8的任何其他包中是否有类似的方便util
public final class Utils {
public static <T> Option<T> optionOfThrowableSupplier(Supplier<T> supplier){
try {
T x = supplier.get();
return Option.some(x);
} catch (Exception e) {
return Option.none();
}
}
}
公共最终类Utils{
公用静态选项选项为可移动供应商(供应商){
试一试{
T x=supplier.get();
返回选项。部分(x);
}捕获(例外e){
返回选项。无();
}
}
}
似乎不存在这样的实用程序。我建议创建一个Supplier
包装类来解决这个问题,它将给定的Supplier
转换为Supplier
,并且get
方法将返回选项。none()代码>引发异常时
导入java.util.function.Supplier;
导入io.vavr.control.Option;
公共类HandleExceptionOption供应商实现供应商{
公共静态void main(字符串[]args){
供应商无错误供应商=()->{
返回“成功”;
};
供应商错误供应商=()->{
抛出新的RuntimeException(“”);
};
System.out.println(新HandleExceptionOptionSupplier(noErrorSupplier.get())
.getOrElse(“无要素”);
System.out.println(新HandleExceptionOptionSupplier(errorSupplier.get)()
.getOrElse(“无要素”);
}
私人最终供应商-一次性供应商;
/**
*当throwableSupplier没有错误时返回{@link Option#some(Object)},
*当出现异常时,返回{@link Option#none()}
*/
@凌驾
公共选项get(){
试一试{
T value=throwableprovider.get();
返回选项。一些(值);
}捕获(例外e){
返回选项。无();
}
}
/**
*@param throwableprovider要包装的供应商
*/
公共手例外选项供应商(供应商抛弃供应商){
this.throwableprover=throwableprover;
}
}
为什么不:
Try.of(() -> "throwable supplier").toOption()
?可调用的可能更适合于“可能引发异常的供应商”