2012-10-18 28 views
3

这个构造为什么会在Eclipse中产生错误/警告?我明白它会产生一个报告,但我想必须有一些基本原理,如果你弄清楚那些冗余的超级接口,会出现什么问题。eclipse中的冗余超级界面警告

实施例:

interface I1{ 
    void boo(); 
} 


class A implements I1 { 
    public void boo() {} 
} 


class B extends A implements I1 { 
    public void boo() {} 
} 

该警告是在B,近实现I1

+0

你能告诉我们一些代码吗? – flash

+0

这可能是一个配置问题,我的eclipse不会给我多余的'implements'提示警告。 – Keppil

+0

是的,您可以打开/关闭此警告。这就是为什么我使用*可以*。 – pihentagy

回答

3

成像如果类A实现I1和类B延伸A。默认B实现I1,即使它不需要实现I1中的任何方法。如果A要更改为执行I2B仍然会编译。

但是,如果B明确implements I1但不提供的方法,则此更改将导致B不再编译。

当然,我忽略了B的用户可能会认为B执行I1的问题。我们假设这个案例不是问题。

3

这只是一个警告,我想这有两方面的原因:

  • 它是多余的,并因此可以去除。噪音越少,它就越好。但这是一个风格问题
  • 它告诉你,你不需要在B中实现任何接口方法,因为它们已经在A中实现了。并且实现接口方法因此不仅实现接口,但也覆盖超类中的默认实现。