如果我有
public class Foo {
static {
System.loadLibrary("foo");
}
private native void foo();
}
然后
public class Bar extends Foo {
}
在我的JNI中我有:
JNIEXPORT void JNICALL
org_mikesolomon_soq_Bar_foo
(JNIEnv *env, jobject obj)
{
}
函数foo
是否会自动成为Bar
的一部分,或者编译器是否期望在foo
中将Bar
定义为本机方法?我问,因为我有一堆类继承自bass类并以以下形式实现本机方法:
org_mikesolomon_soq_A_foo
org_mikesolomon_soq_B_foo
org_mikesolomon_soq_C_foo
org_mikesolomon_soq_D_foo
其中A
,B
,C
和D
都从基类继承。这样可以免除我的写作
public native void foo();
每个班级。
答案 0 :(得分:2)
本地方法在Foo.
中定义提供Bar
中的实现没有任何意义,除非在Bar的Java代码中有相应的重写本机方法声明。
目前还不清楚你究竟要做什么,但这不会做任何事情。除非它对应于Java本机方法声明,否则将忽略本机方法。