env->GetFieldID 參數含義

在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

相關文章
相關標籤/搜索