我对 Java 11 (OpenJDK) 有一个奇怪的编译错误:
找不到符号:方法 not(java.util.function.Predicat<java.lang.Class>) 位置:接口 java.util.function.Predicate
Intellij Idea 没有显示任何警告或错误......可能有什么问题?强制转换为 Predicate<Class> 并使 Idea 的缓存无效并没有帮助。
public class ConditionForBean implements Condition {
@FunctionalInterface
private interface NoException<T, R> {
R apply(T t) throws Exception;
}
private static Function<String, Class> runtimeOf(NoException<String, Class> f) {
return (str) -> {
try {
return f.apply(str);
} catch (Exception e) {
throw new RuntimeException(e);
}
};
}
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
String[] beanNames = conditionContext.getBeanFactory().getBeanDefinitionNames();
return Arrays.stream(beanNames)
.map(conditionContext.getBeanFactory()::getBeanDefinition)
.map(BeanDefinition::getBeanClassName)
.map(runtimeOf(Class::forName))
.filter(Predicate.not(ConditionalBean.class::equals)) // error
.map(Class::getInterfaces)
.noneMatch(interfaces -> Arrays.asList(interfaces).contains(Excludable.class));
}
}