Java 接口的弃用方法是否必须实现?
Java interface's deprecated methods must be implemented or not?
我正在将 0.98.10
的 HBase 代码更新为 1.1.5
,但编译器显示 myWalObserver 不再实现原始接口 WALObserver
。
编译器输出:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-
plugin:3.1:compile (default-compile) on project observer: Compilation failure
[ERROR] /Users/zhangsong.zs/git/HBaseObserver/src/main/java/com/gavin/observer/
DataSyncWALObserver.java:[39,8] com.gavin.observer.DataSyncWALObserver
is not abstractand does not override abstract method
postWALWrite(org.apache.hadoop.hbase.coprocessor.ObserverContext<? extends org.apache.hadoop.hbase.coprocessor.WALCoprocessorEnvironment>,
org.apache.hadoop.hbase.HRegionInfo,org.apache.hadoop.hbase.wal.WALKey,
org.apache.hadoop.hbase.regionserver.wal.WALEdit) in
org.apache.hadoop.hbase.coprocessor.WALObserver
因此在1.1.5
版本的同一接口中添加了一些新的API,旧的API被弃用了。旧代码不再工作,这对开发人员不利。
所以我想问:我是否还必须实现已经弃用或不推荐使用的旧接口方法?
是的,您必须实现已弃用的接口方法。但是,您可以让它们抛出 UnsupportedOperationException
以向调用者发出信号,表明它们实际上并未实现。
是的,你必须这样做。 Deprecated 表示不建议使用。任何实施仍必须实施它。
代码维护技术
- 已弃用的方法是 class/interface 的一部分。
- 您可以选择在派生的此类方法中抛出异常 class。
这是一些背景:
- 通常,如果找到接口函数 redundant/unusable,则将其标记为已弃用。
- 我们可以选择如何处理 IDE 中的弃用注释 compilation/error 报告。
我正在将 0.98.10
的 HBase 代码更新为 1.1.5
,但编译器显示 myWalObserver 不再实现原始接口 WALObserver
。
编译器输出:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-
plugin:3.1:compile (default-compile) on project observer: Compilation failure
[ERROR] /Users/zhangsong.zs/git/HBaseObserver/src/main/java/com/gavin/observer/
DataSyncWALObserver.java:[39,8] com.gavin.observer.DataSyncWALObserver
is not abstractand does not override abstract method
postWALWrite(org.apache.hadoop.hbase.coprocessor.ObserverContext<? extends org.apache.hadoop.hbase.coprocessor.WALCoprocessorEnvironment>,
org.apache.hadoop.hbase.HRegionInfo,org.apache.hadoop.hbase.wal.WALKey,
org.apache.hadoop.hbase.regionserver.wal.WALEdit) in
org.apache.hadoop.hbase.coprocessor.WALObserver
因此在1.1.5
版本的同一接口中添加了一些新的API,旧的API被弃用了。旧代码不再工作,这对开发人员不利。
所以我想问:我是否还必须实现已经弃用或不推荐使用的旧接口方法?
是的,您必须实现已弃用的接口方法。但是,您可以让它们抛出 UnsupportedOperationException
以向调用者发出信号,表明它们实际上并未实现。
是的,你必须这样做。 Deprecated 表示不建议使用。任何实施仍必须实施它。
代码维护技术
- 已弃用的方法是 class/interface 的一部分。
- 您可以选择在派生的此类方法中抛出异常 class。
这是一些背景:
- 通常,如果找到接口函数 redundant/unusable,则将其标记为已弃用。
- 我们可以选择如何处理 IDE 中的弃用注释 compilation/error 报告。