Java 使用基础 class 继承本机方法
Java use base class for inherited native method
如果我有
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
中的本地方法?我问是因为我有一堆 classes 继承自 bass class 并以以下形式实现本地方法:
org_mikesolomon_soq_A_foo
org_mikesolomon_soq_B_foo
org_mikesolomon_soq_C_foo
org_mikesolomon_soq_D_foo
其中 A
、B
、C
和 D
都继承自基础 class。这将使我免于写出
public native void foo();
每个 class.
本机方法在 Foo.
中定义 在 Bar
中提供实现没有任何意义,除非在 Java 的代码中有相应的重写本机方法声明酒吧.
不清楚您到底想做什么,但这不会做任何事情。本机方法将被忽略,除非它对应于 Java 本机方法声明。
如果我有
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
中的本地方法?我问是因为我有一堆 classes 继承自 bass class 并以以下形式实现本地方法:
org_mikesolomon_soq_A_foo
org_mikesolomon_soq_B_foo
org_mikesolomon_soq_C_foo
org_mikesolomon_soq_D_foo
其中 A
、B
、C
和 D
都继承自基础 class。这将使我免于写出
public native void foo();
每个 class.
本机方法在 Foo.
中定义 在 Bar
中提供实现没有任何意义,除非在 Java 的代码中有相应的重写本机方法声明酒吧.
不清楚您到底想做什么,但这不会做任何事情。本机方法将被忽略,除非它对应于 Java 本机方法声明。