如何使用@SuppressWarning
注释来抑制以下错误?
方法
Foo.trololo()
不会覆盖Bar
的继承方法,因为它是私有的其他包
据我所知,唯一的方法是用@SuppressWarning("all")
覆盖整个方法,我不愿意这样做。
为了澄清:两种方法的命名和范围都是有意选择的,并且两个类被故意放入不同的包中,因为知道方法彼此不可见。我只是想宣布我承认我在做什么,不想被警告。
答案 0 :(得分:6)
这意味着,即使您的方法与超类中的(非私有)方法具有相同的名称,它也不会覆盖该方法。
这是一个特定于Eclipse的警告。语言规范中没有任何内容表明应该产生此警告。如果您愿意,这是一个“特定于IDE的功能”。因此,没有“通用”的方式来抑制消息。
(例如,javac
不会产生此警告。)
(我知道你没有找到这个,但本页的其他访问者可能会!)
要禁用此警告,请转到
窗口 - > 偏好设置 - > Java - > 编译器 - > 错误/警告
并将“方法不会覆盖包可见方法”设置为“忽略”。
答案 1 :(得分:2)
此警告表示您在trololo
中有一个包私有方法Bar
,在trololo
中有一个Foo
方法,其范围为Bar
,但是不在同一个包中。
如果您的目标是使用Bar.trololo
覆盖Foo.trololo
方法,则必须保护Bar.trololo方法。如果您的目标是使用两种不同的方法,那么最好将第二个方法命名为tralala
,以使其更清晰并避免混淆。
答案 2 :(得分:0)
如果要对特定项目进行抑制警告,请在Eclipse Package Explorer中右键单击项目 - >属性 - > Java编译器 - >错误/警告然后选中“启用项目特定设置” - >名称阴影和冲突然后将“方法不会覆盖包可见方法”设置为“忽略”。重建项目并且警告将消失。完成!!