/*
* C++ object wrapper.
*
* This is usually overlaid on a C struct whose first element is a
* JNINativeInterface*. We rely somewhat on compiler behavior.
*/
struct _JNIEnv {
/* do not rename this; it does not seem to be entirely opaque */
const struct JNINativeInterface* functions;
#if defined(__cplusplus)
jint GetVersion()
{ return functions->GetVersion(this); }
jclass DefineClass(const char *name, jobject loader, const jbyte* buf,
jsize bufLen)
{ return functions->DefineClass(this, name, loader, buf, bufLen); }
// ...
基本数据类型
值类型
类型签名
签名规则:( arg-types ) ret-type 例如Java方法:
long f (int n, String s, int[] arr);
对应的类型签名:(ILjava/lang/String;[I)J
JNINativeInterface & _JNIEnv & JNIEnv
C 中使用 JNINativeInterface
C++ 中使用 JNIEnv
在开发中不论是使用C/C++,上述两个
Struct
都被定义成了 JNIEnv