繁体   English   中英

Java将基类用于继承的本机方法

[英]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的本机方法? 我问是因为我有一堆类是从低音类继承并以以下形式实现本机方法:

org_mikesolomon_soq_A_foo
org_mikesolomon_soq_B_foo
org_mikesolomon_soq_C_foo
org_mikesolomon_soq_D_foo

其中ABCD都从基类继承。 这样可以避免我写出来

public native void foo();

在每个班级。

本机方法在Foo.定义Foo. Bar中提供实现没有任何意义,除非Bar的Java代码中有相应的重写本机方法声明。

目前尚不清楚您到底想做什么,但这不会做任何事情。 除非本机方法与Java本机方法声明相对应,否则它将被忽略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM