1

在 Ubuntu Linux 中创建并在 OpenJDK 6 下编译的存储库中,在实现 LocationListener 和 SensorListener 时,@Override在继承的方法上方添加标记可以正常编译。

但是,当将 repo 克隆到使用 Oracle Java 的 Windows 系统时,其中一些会@Override生成错误。下面的例子: The method onAccuracyChanged(Sensor, int) of type ExpeditionActivity must override a superclass method

似乎仅当您在@Override从实现接口继承的方法之上添加时才会发生此错误。在从基类继承的方法之上添加@Override不会产生错误。这实际上是有道理的,因为您实际上是在覆盖原始方法的逻辑。

@Override那么,写上面继承的接口方法是否正确?

4

2 回答 2

3

@Override仅限于 JDK 5 中的基类方法。

JDK 6 引入了应用于@Override接口方法的能力。

Eclipse 必须设置为使用 JDK6/JDK6 语言级别才能@Override在接口方法上使用。

要回答您的问题,“是的,如果您在 JDK 6+ 下编译”。

于 2012-10-06T22:51:34.447 回答
0

我有时会明白。不太清楚它的原因是什么。

我找到了一些修复它的方法。也许其中一些对你有用

  • 有时它有助于简单地删除方法声明并重写它。
  • 确保参数和返回值正确。例如,在 Andrdid 中,当你扩展时,AsyncTask你给扩展类 3 参数,基于这些参数你需要用正确的参数和返回值覆盖方法。
  • 如果接口/基类需要该方法,请尝试删除该方法。接口/基类下会出现错误。将鼠标光标放在它上面并选择Add Unimplemented methods它会使 eclipse 添加这些方法,您将不得不重新填充主体,但错误会消失。

我确实相信这是一个 Eclipse 错误,因为删除@Override注释不会影响代码,代码可以正确编译和运行。

祝你好运

于 2012-10-06T22:43:42.717 回答