2016-07-04 14 views
-1

Ich aktualisiere HBase-Code von 0.98.10 zu 1.1.5, aber der Compiler zeigt, dass myWalObserver die ursprüngliche Schnittstelle WALObserver nicht mehr implementiert.Java-Schnittstelle veraltete Methoden müssen implementiert werden oder nicht?

Die Compiler-Ausgänge:

[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 

So einige neue APIs wurden in der gleichen Schnittstelle von 1.1.5 Version, und die alten APIs sind veraltet hinzugefügt. Der alte Code funktioniert nicht mehr, was für Entwickler schlecht ist.

Also ich möchte fragen: Muss ich noch die alten Interface-Methoden implementieren, die bereits veraltet sind oder nicht?

Antwort

4

Ja, Sie müssen veraltete Schnittstellenmethoden implementieren. Sie dürfen sie jedoch dazu bringen, UnsupportedOperationException zu werfen, um Anrufern zu signalisieren, dass sie nicht wirklich implementiert sind.

+0

Eine Definition der veralteten Methoden, wirft nicht UnsupportedOperationException: @deprecated boolean preWALWrite (ObserverContext CTX, HRegionInfo Info, HLogKey logKey, WALEdit LogEdit) throws IOException; – Al2O3

+0

@Rubby Großartig! Implementieren Sie diese Methode und werfen Sie einfach "neueUnunterstützteOperationException();" in ihren Körper. (Hinweis: 'UnsupportedOperationException' ist eine ungeprüfte Ausnahme und muss nicht in der throws-Klausel deklariert werden.) –

0

Ja, Sie müssen. Veraltet bedeutet, dass es nicht empfohlen wird. Jede Implementierung muss es noch implementieren.

0

Es ist Code-Wartungstechnik.

  1. Veraltete Methoden sind Teil der Klasse/Schnittstelle.
  2. Sie können auswählen, dass eine Ausnahme in einer solchen Methode in der abgeleiteten Klasse ausgelöst wird. Hier

einige Hintergrundinformationen:

  1. Generell gilt: Wenn die Schnittstellenfunktion gefunden wird überflüssig/unbrauchbar dann wird es als veraltet markiert.
  2. Wir können auswählen, wie veraltete Annotationskompilierung/Fehlerberichte in Ihrer IDE verarbeitet werden.