繁体   English   中英

有些@Override在Oracle Java中显示错误,但在OpenJDK中没有

[英]Some @Override shows errors in Oracle Java but not in OpenJDK

在于在Ubuntu Linux操作系统执行LocationListener的和SensorListener时,加入创建并编译的OpenJDK 6下,存储库@Override的继承方法上述标签编译罚款。

但是当使用Oracle Java将repo克隆到Windows系统上时,一些@Override产生错误。 示例如下: The method onAccuracyChanged(Sensor, int) of type ExpeditionActivity must override a superclass method

似乎只有在从实现接口继承的方法上面添加@Override时才会出现此错误。 在从基类继承的方法上面添加@Override不会生成错误。 这实际上是有道理的,因为你实际上覆盖了原始方法的逻辑。

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

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

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

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

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

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

我发现修复它的几种方法。 也许其中一些会对你有用

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

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

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM