我在这里和这里看到你不能在 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
}
}
库加载没有问题,第一个方法被调用,但不是第二个。
如果我将 bMethod 从 B 移动到 A,一切正常。
将 System.loadlibrary() 从 B 移动到 A 似乎没有效果。
是否可以使用其他本地方法扩展 A 类?