我有这两种方法:
Set<Class<?>> findAllClassesUsingClassLoader(String packageName)
void addNotRetryableExceptions(Class<? extends Exception>... exceptionTypes)
这段代码不会编译,即使它运行起来没有任何问题:
findAllClassesUsingClassLoader("my.project.exception").stream()
.filter(RuntimeException.class::isAssignableFrom)
.map(x -> x.asSubclass(RuntimeException.class)) // Type mismatch: cannot convert from Class<capture#14-of ? extends RuntimeException> to Class<RuntimeException>
.forEach(recoverer::addNotRetryableExceptions);
我该如何正确地解决这个问题?
1条答案
按热度按时间eivgtgni1#
我尝试了从Java 8到17的几个JDK版本,都不能用
javac
重现这个错误,所以这似乎是Eclipse编译器的问题。您可以使用
但我也认为编译器没有理由在这里推断
Class<RuntimeException>
,所以我认为,javac
是正确的,Eclipse的编译器有一个bug。