簡體   English   中英

必須執行Java接口不推薦使用的方法嗎?

[英]Java interface's deprecated methods must be implemented or not?

我更新的HBase的代碼0.98.101.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以向調用者發出信號,表明它們實際上並未實現。

是的,你必須。 已棄用意味着不建議使用。 任何實現都必須仍然實現它。

它是代碼維護技術。

  1. 不推薦使用的方法是類/接口的一部分。
  2. 您可以選擇在派生類的此類方法內引發異常。

這里是一些背景:

  1. 通常,如果發現接口功能冗余/不可用,則將其標記為已棄用。
  2. 我們可以選擇如何在IDE中處理已棄用的注釋編譯/錯誤報告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM