我在Java 11(OpenJDK)中遇到一个奇怪的编译错误:
找不到符号:方法 不是(java.util.function.Predicat
)位置: 接口java.util.function.Predicate
Intellij Idea不显示任何警告或错误...可能出什么问题了?
强制转换为Predicate
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));
}
}
答案 0 :(得分:1)
这个问题太愚蠢了... 我有
<内部版本>
在pom.xml中,将1.9替换为1.11之后就消失了。