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?
Eine Definition der veralteten Methoden, wirft nicht UnsupportedOperationException: @deprecated boolean preWALWrite (ObserverContext CTX, HRegionInfo Info, HLogKey logKey, WALEdit LogEdit) throws IOException; –
Al2O3
@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.) –