Android でネイティブ メソッドをオーバーライドできないことをこことここで見てきましたが、いくつかのネイティブ メソッドを宣言するクラスを作成し、それをいくつかの追加のネイティブ メソッドを宣言する別のクラスで拡張できるかどうか疑問に思っていました。
私の状況は次のとおりです。
public class A{
public native int aMethod();
}
public class B extends A{
public native int bMethod();
static {
try{
System.loadLibrary("MyNativeLibraryWithBothaMethodAndbMethod");
}
catch (java.lang.UnsatisfiedLinkError e){
System.out.println (e);
}
}
}
public class MyActivity extends Activity {
private B bClass;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
bClass = new B();
bClass.aMethod();//Working fine
bClass.bMethod();//UnsatisfiedLinkError
}
}
ライブラリは問題なくロードされ、最初のメソッドは呼び出されますが、2 番目のメソッドは呼び出されません。
bMethod を B から A に移動すると、すべて正常に動作します。
System.loadlibrary() を B から A に移動しても効果がないようです。
追加のネイティブ メソッドで A クラスを拡張することは可能ですか?