在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