【问题标题】:Can I get Java 5 to ignore @Override errors? [duplicate]我可以让 Java 5 忽略 @Override 错误吗? [复制]
【发布时间】:2011-01-09 07:24:40
【问题描述】:

可能重复:
Why does Eclipse complain about @Override on interface methods?

我有一些使用 Eclipse 和 Java 6 SDK 编写的 Java 代码,因此实现接口的方法使用 @Override 进行注释 - 这是在 Java 6 中合法但在 Java 5 中不合法的注释。

我想使用 Java 5 SDK(Mac OS X 10.5 上的javac)编译相同的代码。除了 @Override 注释之外,一切都编译并运行良好。有什么方法可以让 javac 忽略该项目的 @Override 注释,或者是唯一的解决方案将它们全部删除?

【问题讨论】:

    标签: java annotations overriding


    【解决方案1】:

    不幸的是,唯一的方法是实际删除注释。

    如果您确实希望使用 Java 5 编译和运行您的代码,则应针对 Java 5 进行开发。否则,您可能会意外依赖 Java 6 特定的 SDK 方法等。

    【讨论】:

    • 不过,可以通过预处理步骤轻松删除它们。
    【解决方案2】:

    显然您可以升级到 Java 1.5 u21,这将解决问题:

    Why is javac failing on @Override annotation

    【讨论】:

    【解决方案3】:

    您可以使用 JDK6 编译 1.5 代码。使用-bootclasspath-target-source。或者,我相信 Eclipse 编译器将 @Override 视为相同(这可能是错误的!)。

    1.5 已结束其使用寿命,我建议让它腐烂。

    【讨论】:

    • +1 用于建议 -target 和 -source。看看这是否有效会很有趣。
    • 这个有用吗,你试过了吗? ^^
    【解决方案4】:

    @Override 在 java 5 中有效 -> http://java.sun.com/j2se/1.5.0/docs/api/index.html?java/lang/Override.html

    我建议您在 Eclipse 中检查项目的编译器设置,可能在 Project -> Compiler -> Error/Warnings -> Annotations 中?

    【讨论】:

    • +1 - 我也想说同样的话。我也使用@Override,但我仍在使用 jdk 1.5。
    • @Override 的语义在 Java 5 和 6 之间发生了变化——在 5 中,当用于实现接口的方法时会导致编译器错误。在 6 中,当 not 用于此类方法时会导致警告。问题是如何处理这种差异。
    • 是的,@Override 在 Java 5 中有效。但 Java6 的规范已更改。在Java6中,您可以知道实现接口方法的注释方法。这在 Java6 中是不可能的。
    • "表示方法声明旨在覆盖超类中的方法声明" -- 支持方法-方法覆盖,但不支持方法-接口覆盖! (或者有人请纠正我)
    • 正如我所写:自 Java 6 起支持方法接口覆盖,但不幸的是,此更改没有记录在任何地方(我相信有一个关于 API 文档未更新的官方错误)。跨度>
    【解决方案5】:

    Java 6 可用于 OS X。检查软件更新。当你有了它,将它设置为默认的java版本,然后编译。

    【讨论】:

    • 当他也想以 Java 5 为目标时,这并不是真正的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多