Java 11无法解析方法,如果是错误?

时间:2018-10-14 11:26:19

标签: java java-11

我在Java 11(OpenJDK)中遇到一个奇怪的编译错误:

  

找不到符号:方法   不是(java.util.function.Predicat )位置:   接口java.util.function.Predicate

Intellij Idea不显示任何警告或错误...可能出什么问题了? 强制转换为Predicate 并使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));
        }
    }

1 个答案:

答案 0 :(得分:1)

这个问题太愚蠢了... 我有

<内部版本>


maven-compiler-plugin

1.9
1.9




在pom.xml中,将1.9替换为1.11之后就消失了。