是否必须实现Java接口的弃用方法?

时间:2016-07-04 04:46:53

标签: java api interface hbase deprecated

我正在将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已弃用。旧代码不再起作用,这对开发人员来说是不好的。

所以我想问:我是否仍然要实现已经弃用的旧接口方法?

3 个答案:

答案 0 :(得分:4)

是的,您必须实现弃用的接口方法。但是,您可以让他们抛出UnsupportedOperationException来向呼叫者发出他们实际上没有实现的信号。

答案 1 :(得分:1)

是的,你必须。弃用意味着不建议使用。任何实现都必须实现它。

答案 2 :(得分:0)

这是代码维护技术。

  1. 不推荐使用的方法是类/接口的一部分。
  2. 您可以选择在派生类中的此类方法中抛出异常。
  3. 以下是一些背景知识:

    1. 通常,如果发现接口功能冗余/不可用,则将其标记为已弃用。
    2. 我们可以选择如何在IDE中处理不推荐的注释编译/错误报告。