Java 压制;该方法不会重写继承的方法,因为它是另一个包的专用方法。”;

Java 压制;该方法不会重写继承的方法,因为它是另一个包的专用方法。”;,java,eclipse,annotations,Java,Eclipse,Annotations,如何使用@SuppressWarning注释抑制以下错误 方法Foo.trololo()不会覆盖从Bar继承的方法,因为它是另一个包的私有方法 就我所知,唯一的办法是用@SuppressWarning(“all”)覆盖整个方法,我不希望这样做 澄清一下:这两个方法的命名和范围都是经过深思熟虑的选择,这两个类故意放在不同的包中,因为它们知道这些方法彼此不可见。我只是想声明我承认我正在做的事情,不想被警告。这意味着什么(你可能已经知道了) 这意味着,即使您的方法与超类中的(非私有)方法具有相同的名

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

方法
Foo.trololo()
不会覆盖从
Bar
继承的方法,因为它是另一个包的私有方法

就我所知,唯一的办法是用
@SuppressWarning(“all”)
覆盖整个方法,我不希望这样做


澄清一下:这两个方法的命名和范围都是经过深思熟虑的选择,这两个类故意放在不同的包中,因为它们知道这些方法彼此不可见。我只是想声明我承认我正在做的事情,不想被警告。

这意味着什么(你可能已经知道了) 这意味着,即使您的方法与超类中的(非私有)方法具有相同的名称,它也不会重写该方法。

关于警告信息 这是一个特定于Eclipse的警告。语言规范中没有规定它应该产生此警告。如果您愿意,这是一个“特定于IDE的特性”。因此,没有“通用”的方式来抑制消息

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

如何禁用此警告(在Eclipse中) (我知道你不是在找这个,但是这个页面的其他访问者可能会!)

要禁用此警告,请转到

窗口->首选项->Java->编译器->错误/警告


并将“Method not override package visible Method”设置为“Ignore”。

此警告意味着您在
Bar
中有一个包私有方法
trololo
,在
Foo
中有一个
trololo
方法,它扩展了
Bar
,但不在同一个包中


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

如果您想禁止对特定项目发出警告,请在Eclipse包资源管理器中,右键单击该项目->属性->Java编译器->错误/警告,然后选中“启用项目特定的设置”->名称隐藏和冲突,然后将“方法不重写包可见方法”设置为“忽略”。重建项目和警告将消失。完成!!

这似乎是一个错误,您不应抑制它…警告是两个基类中同时命名的、包范围的方法的结果(我无法控制)和我自己的类。我的方法的名称和范围都是经过深思熟虑的,而且“冲突”"与基类只是一个不幸的巧合。我不想重写基类功能,也不想以任何方式直接与它交互。然后我会重命名你的方法以避免混淆。它是包范围的,所以不会有太大的影响。这可能是我将致力于的最终解决方案is occurs也是一个库,所以它不像一个简单的方法重构那么快,但由于API只在内部使用,因此使用者的数量非常有限。由于这是一个库项目,我希望避免用警告来污染引用项目。因为这在第一种情况下可能非常罕见place(我第一次看到它)我将不得不解决禁用警告的问题。感谢您的澄清。我可以看出这是一个多么烦人的情况。欢迎:-)您也可以针对每个项目而不是整个工作区执行此操作。在Eclipse包资源管理器中,右键单击项目->属性->Java编译器->错误/警告