sig: 该属性的域签名。
返回值:属性ID。如果操作失败,则返回NULL。 抛出:NoSuchFieldError:如果找不到指定的域。
ExceptionInInitializerError:如果由于异常而导致类初始化程序失败。 OutOfMemoryError:如果系统内存不足。
Get
NativeType Get
obj:Java 对象(不能为 NULL)。 fieldID:有效的域 ID。 返回值: 属性的内容。
Get
GetFloatField() jfloat GetDoubleField() jdouble Set
void Set
功能: 该访问器例程系列设置对象的实例(非静态)属性的值。要访问的属性由通过调用SetFieldID() 而得到的属性 ID指定。 参数: env:JNI 接口指针。
obj:Java 对象(不能为 NULL)。 fieldID:有效的域 ID。 value:域的新值。
方法族 如下:
Set
2、静态属性的访问 :也存在相同的方法,
jfieldID GetStaticFieldID (JNIEnv *env,jclass clazz, const char *name, const char *sig);
NativeType GetStatic
void SetStatic
fieldID, NativeType value);
它们与实例属性的唯一区别在于第二个参数jclass classzz代表的是类引用,而不是类实例。 3、调用实例方法
jmethodID GetMethodID(JNIEnv *env, jclass clazz, const char *name, const char *sig);
功能:返回类或接口实例(非静态)方法的方法 ID。方法可在某个 clazz 的超类中定义,也可从 clazz 继承。该方法由其名称
和签名决定。 GetMethodID() 可使未初始化的类初始化。要获得构造函数的方法 ID,应将
返回值: 方法 ID,如果找不到指定的方法,则为 NULL。 抛出:NoSuchMethodError:如果找不到指定方法。
ExceptionInInitializerError:如果由于异常而导致类初始化程序失败。 OutOfMemoryError:如果系统内存不足。
Call
NativeType Call
NativeType Call
NativeType Call
说明:这三个操作的方法用于从本地方法调用Java 实例方法。它们的差别仅在于向其所调用的方法传递参数时所用的机制。
这三个操作将根据所指定的方法 ID 调用 Java 对象的实例(非静态)方法。参数 methodID 必须通过调用 GetMethodID()
来获得。当这些函数用于调用私有方法和构造函数时,方法 ID 必须从obj 的真实类派生而来,而不应从其某个超类派生。 当然,附加参数可以为空 。
参数: env:JNI 接口指针。
obj:Java 对象。
methodID:方法 ID。 返回值: 返回调用 Java 方法的结果。 抛出: 执行 Java 方法时抛出的异常。
下表根据结果类型说明了各个方法类型。用户应将Call
中的实际方法名),同时将 NativeType 替换为该方法相应的本地类型。省略掉了其他两种类型。
Java层返回值 方法本地返回类型NativeType
返回值为void : CallVoidMethod( ) A / V (无) 返回值为引用类型: CallObjectMethod( ) jobect
返回值为boolean : CallBooleanMethod( ) jboolean 返回值为byte : CallByteMethod( ) jbyte 返回值为char : CallCharMethod( ) jchar 返回值为short CallShortMethod( ) jshort 返回值为int : CallIntMethod( ) jint 返回值为long: CallLongMethod() jlong 返回值为float : CallFloatMethod() jfloat 返回值为double: CallDoubleMethod() jdouble 4、调用静态方法:也存在如下方法群,
jfieldID GetStaticMethodID (JNIEnv *env,jclass clazz, const char *name, const char *sig);