在Jni01的 Java_com_test01_Test_firstTest方法中写以下代码:spa
JNIEXPORT void JNICALL Java_com_test01_Test_firstTest(JNIEnv * env, jobject obj){class
jclass class_Test=env->GetObjectClass(obj); //注释(1)test
jfieldID fid_msg=env->GetFieldID(class_Test,"message","I");//注释(2)变量
env->SetIntField(obj,fid_msg,123);//注释(3)object
}方法
(1)调用GetObjectClass方法来获取Jclass,GetObjectClass的参数就是obj注释
(2)调用GetFieldID方法来获取jfieldID,这里要说明一下Jni的全部操做,其实就是操做方法或者是操做属性两种。操做方法时须要根据方法的ID(jmethodID)来操做,能够理解为jmethodID标识了这个方法,也就是经过这个jmethodID能够找到你要找的方法。同理操做属性时也要根据该属性的ID(jfieldID )来操做。上面那段代码里咱们要改变 变量message的值,因此要先获取该变量的jfieldID 。获取变量的jfieldID 方法是GetFieldID。GetFieldID须要3个参数。第一个是上一步获取的Jclass,第二个参数是Java中的变量名,最后一个参数是变量签名(int 的变量签名是”I“)。co