现在的位置: 首页 > 综合 > 正文

关于Object类里的本地方法registerNatives

2013年05月11日 ⁄ 综合 ⁄ 共 654字 ⁄ 字号 评论关闭

为了加深对java本地方法的理解,在网上找到了该方法的C源码部分,如下:
static JNINativeMethod methods[] = {

    {"hashCode",    "()I",                    (void *)&JVM_IHashCode},
    {"wait",        "(J)V",                   (void *)&JVM_MonitorWait},
    {"notify",      "()V",                    (void *)&JVM_MonitorNotify},
    {"notifyAll",   "()V",                    (void *)&JVM_MonitorNotifyAll},
    {"clone",       "()Ljava/lang/Object;",   (void *)&JVM_Clone},
};

JNIEXPORT void JNICALL

Java_java_lang_Object_registerNatives(JNIEnv *env, jclass cls)
{
    (*env)->RegisterNatives(env, cls,
                            methods, sizeof(methods)/sizeof(methods[0]));

}
很简单,就是对几个本地方法进行注册(也就是初始化java方法映射到C的方法)。

这里需要注意的是很多类里都有这个方法,但是执行的目标是不相同的,例如在我另一篇《System与Runtime源码解析》System里的这个方法,就不一样了。

抱歉!评论已关闭.