在 JDK 11 和 12 中,包装为在流中抛出运行时异常的已检查异常失败并出现编译错误。
package com.mmk.test;
import java.net.URL;
import java.util.ArrayList;
import java.util.function.Function;
public class App {
public static void main(String[] args) {
var list = new ArrayList<String>();
list.add("http://foo.com");
list.stream().map(wrap(url -> new URL(url)));
}
static <T, R, E extends Throwable> Function<T, R>
wrap(FunException<T, R, E> fn) {
return t -> {
try {
return fn.apply(t);
} catch (Throwable throwable) {
throw new RuntimeException(throwable);
}
};
}
interface FunException<T, R, E extends Throwable> {
R apply(T t);
}
}
预期:没有编译错误,也没有输出。实际:编译错误,未处理的异常。
慕尼黑的夜晚无繁华
相关分类