请教关于JNI C++层中调用Java函数 - 熟悉JNI的回答。
在 C++中调用的的Java函数f,可以在so文件生成后,再改写实现么。
或者说,这个函数f可以调用抽象方法么?
代码如下:
abstract class A {
native void callF();/* we call f() in this implementation. */
void f() {
abstractF();
}
abstract void abstractF();
}
class B extends A {
void abstractF() { ... }
}
// calling codes:
A a = new B();
a.callF();
以上可以正常运行么? 就是 B的abstractF()会被正常调用么?
------解决方案--------------------
1.答:可以.
2.答:jni层可以不变,只要是针对抽象编程(针对抽象类A的引用来编程),以后不论增加多少个A的派生类,只要传递给派生类的实例去调用,就可以调用到具体派生类的方法