在Java中经常会遇到通过外部语言扩展Java本身的需要,此时就需要使用到JNI这门技术(规范)。
在c/c++中,java层的数据类型需要转化成类型签名,如在google中被收录在最前边的官方文档中Table 3-2所示。
问题来了,那么void类型在c/c++用什么来映射呢。这份表格里边是没有的(对应java 7的JNI规范里边也没有)。今天在其他文档里边间接查到void类型的类型签名是V:
|
比如Java方法:public static void jsDebugDetachCallback(long udata)
的类型签名为(其中返回值类型V不可省略):"(J)V"
在c中获取该方法id的方式为:jsDebugDetachCallbackMethod = (*env)->GetStaticMethodID(env, someClz, "jsDebugDetachCallback", "(J)V");