取消“该方法不会覆盖继承的方法,因为它对其他包是私有的。”

时间:2011-09-27 13:01:06

标签: java eclipse annotations

如何使用@SuppressWarning注释来抑制以下错误?

  

方法Foo.trololo()不会覆盖Bar的继承方法,因为它是私有的其他包

据我所知,唯一的方法是用@SuppressWarning("all")覆盖整个方法,我不愿意这样做。


为了澄清:两种方法的命名和范围都是有意选择的,并且两个类被故意放入不同的包中,因为知道方法彼此不可见。我只是想宣布我承认我在做什么,不想被警告。

3 个答案:

答案 0 :(得分:6)

这意味着什么(你可能已经知道了)

这意味着,即使您的方法与超类中的(非私有)方法具有相同的名称,它也不会覆盖该方法。

关于警告信息

这是一个特定于Eclipse的警告。语言规范中没有任何内容表明应该产生此警告。如果您愿意,这是一个“特定于IDE的功能”。因此,没有“通用”的方式来抑制消息。

(例如,javac不会产生此警告。)

如何禁用此警告(在Eclipse中)

(我知道没有找到这个,但本页的其他访问者可能会!)

要禁用此警告,请转到

窗口 - > 偏好设置 - > Java - > 编译器 - > 错误/警告

并将“方法不会覆盖包可见方法”设置为“忽略”。

答案 1 :(得分:2)

此警告表示您在trololo中有一个包私有方法Bar,在trololo中有一个Foo方法,其范围为Bar,但是不在同一个包中。

如果您的目标是使用Bar.trololo覆盖Foo.trololo方法,则必须保护Bar.trololo方法。如果您的目标是使用两种不同的方法,那么最好将第二个方法命名为tralala,以使其更清晰并避免混淆。

答案 2 :(得分:0)

如果要对特定项目进行抑制警告,请在Eclipse Package Explorer中右键单击项目 - >属性 - > Java编译器 - >错误/警告然后选中“启用项目特定设置” - >名称阴影和冲突然后将“方法不会覆盖包可见方法”设置为“忽略”。重建项目并且警告将消失。完成!!