Java 11无法解析方法,如果它是一个bug?

问题描述 投票:-2回答:1

我对Java 11(OpenJDK)有一个奇怪的编译错误:

找不到符号:方法没有(java.util.function.Predicat <java.lang.Class>)location:interface java.util.function.Predicate

Intellij Idea没有显示任何警告或错误......有什么可能是错的?转换为谓词<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));
        }
    }
java java-11
1个回答
2
投票

问题是如此愚蠢......我有

<建立> <插件> <插件> <artifactId的>行家编译-插件</ artifactId的> <结构> <源> 1.9 </源> <目标> 1.9 </目标> </配置> </插件> </插件> </建造>

在pom.xml中,在将1.9替换为1.11后,它已经消失了。

© www.soinside.com 2019 - 2024. All rights reserved.