Java:如何避免在覆盖不推荐使用的成员的派生接口中出现不推荐使用的警告?
请考虑以下简化的接口继承层次结构:
// Starting point:
public interface Base {
void Foo();
}
public interface Derived extends Base {
}
它旨在将方法从接口移动到接口:Foo
Base
Derived
// Desired end-point:
public interface Base {
}
public interface Derived extends Base {
void Foo();
}
为了逐步进行此重大更改,希望在一段时间内保持接口的向后兼容性。Base
这可以通过在接口上将方法标记为:Base
@Deprecated
// Intermediate state:
public interface Base {
/**
* @deprecated This method is deprecated as of release X. Derived.Foo should be used instead.
*/
@Deprecated void Foo();
}
public interface Derived extends Base {
void Foo();
}
当我编译此代码时,我收到派生
型编译器警告:
[弃用]接口 Base 中的 Foo() 已被弃用
奇怪的是,如果我从文档中删除(但保留@Deprecated),此警告将消失。@deprecated
Base
我收到此警告是否正确,如果是这样,我该如何解决此问题?
警告似乎传达了“正在使用”(已弃用)的信息。但是,“使用”已弃用的唯一容量是覆盖它。这似乎表明您不允许在派生方法中重写已弃用的接口方法。Derived.Foo
Base.Foo
Derived.Foo
Base.Foo
如果是这种情况,那么我应该装饰以抑制警告吗?Derived
@SuppressWarnings("deprecation")