JNIEXPORT void JNICALL Java_transvar_TransVar_modifyInstanceVariable
(JNIEnv *env, jobject obj)
{
//获取 this object 的类
jclass thisClass = (*env)->GetObjectClass(env,obj);
if(thisClass == NULL)
{
printf("thisClass null\n");
}
//获取字段ID
jfieldID fidAge = (*env)->GetFieldID(env, thisClass, "age", "I");
jfieldID fidName = (*env)->GetFieldID(env, thisClass, "name", "Ljava/lang/String;");
jfieldID fidYear = (*env)->GetStaticFieldID(env, thisClass, "years", "I");
//获取字段
jint age = (*env)->GetIntField(env, obj, fidAge);
jint years = (*env)->GetStaticIntField(env, obj, fidYear);
jstring name = (*env)->GetObjectField(env, obj, fidName);
const char* pszName = (*env)->GetStringUTFChars(env, name, NULL);
printf("[%d Years Later for %s] \n", years, pszName);
(*env)->ReleaseStringUTFChars(env, name, pszName);
age += years;
//修改成员变量
(*env)->SetIntField(env, obj, fidAge, age);
}