【问题标题】:FunctionalInterface is not an annotation type. Am using java 8 & eclipse oxygenFunctionalInterface 不是注释类型。我正在使用 java 8 & eclipse 氧气
【发布时间】:2018-08-06 10:03:30
【问题描述】:

我对使用 java 8 还是很陌生,之前没有真正使用过注释。当我尝试使用 eclipse 氧气、java 8 和指定注释 @FunctionalInterface 编写一个简单的功能接口程序时,我看到红色 x(错误)表示 FunctionalInterface 不是注释类型。

请帮助解决这个问题。我知道提供注释不是强制性的,没有它我的程序也可以正常运行,但我仍然想使用它。

【问题讨论】:

  • Javadoc 说“但是,无论接口声明中是否存在 FunctionalInterface 注释,编译器都会将满足功能接口定义的任何接口视为功能接口。”所以它绝对不是强制性的。
  • 您是否定义了一个名为FunctionalInterface 的类?给我们看minimal reproducible example
  • 请分享代码。
  • @talex OP 已经说过“我知道提供注释不是强制性的”
  • 你真的需要展示你的代码。就目前而言,这个问题没有用,解决它是不可能的。

标签: java eclipse java-8 annotations eclipse-oxygen


【解决方案1】:

希望你没有把你的接口写成,

package com.practice;

@FunctionalInterface
public interface FunctionalInterface {
    void method1();
}

即注解名称和接口名称相同。 @greg-449 在你的评论部分提到的同样的事情。

【讨论】:

    【解决方案2】:

    请确保您的 Installed 是否指向 Eclipse 中的 jre 1.8 验证您可以转到 Window> Preferences > java> installed Jre 如果没有,请更新它

    【讨论】:

      【解决方案3】:

      您应该安装了 Java 8,并且您的 Eclipse 应该使用 Java 8,但是,对于 Java 8,我看到了同样的问题。我手动导入后它消失了:

      import java.lang.FunctionalInterface;
      

      然后我决定只做一个干净的构建,即使“没有”导入语句,问题也消失了。

      【讨论】:

        【解决方案4】:

        首先清理您的项目,即使这不能解决您的问题,请尝试关闭该项目并再次打开该项目。

        【讨论】:

          【解决方案5】:

          面临与接口名称相同的问题是FunctionalInterface。参考早期的 cmets,更新了接口名称和注释对我有用。 @FunctionalInterface 不需要额外的导入。

          【讨论】:

            【解决方案6】:

            如果您将类名定义为 FunctionalInterface,则无需使用 @FunctionalInterface 注释。 重命名类名并尝试一下。

            【讨论】:

              猜你喜欢
              • 2018-03-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-12-02
              相关资源
              最近更新 更多