当前位置: 技术问答>java相关
问题简单,不知道可很麻烦。
来源: 互联网 发布时间:2014-12-26
本文导语: 我在Think in java 一书中看到以下这么一段代码: #include extern "C" JNIEXPORT void JNICALL Java_UseObjects_changeObject( JNIEnv* env, jobject, jobject obj) { jclass cls = env->GetObjectClass(obj); jfieldID fid = env->GetFieldID( cls,...
我在Think in java 一书中看到以下这么一段代码:
#include
extern "C" JNIEXPORT void JNICALL
Java_UseObjects_changeObject(
JNIEnv* env, jobject, jobject obj) {
jclass cls = env->GetObjectClass(obj);
jfieldID fid = env->GetFieldID(
cls, "aValue", "I");
jmethodID mid = env->GetMethodID(
cls, "divByTwo", "()V");
int value = env->GetIntField(obj, fid);
printf("Native: %dn", value);
env->SetIntField(obj, fid, 6);
env->CallVoidMethod(obj, mid);
value = env->GetIntField(obj, fid);
printf("Native: %dn", value);
}
但我弄不懂GetFieldID方法中的"I"和GetMethodID方法中的"()V"这两个参数的含义,
请给我指点指点。谢谢。
#include
extern "C" JNIEXPORT void JNICALL
Java_UseObjects_changeObject(
JNIEnv* env, jobject, jobject obj) {
jclass cls = env->GetObjectClass(obj);
jfieldID fid = env->GetFieldID(
cls, "aValue", "I");
jmethodID mid = env->GetMethodID(
cls, "divByTwo", "()V");
int value = env->GetIntField(obj, fid);
printf("Native: %dn", value);
env->SetIntField(obj, fid, 6);
env->CallVoidMethod(obj, mid);
value = env->GetIntField(obj, fid);
printf("Native: %dn", value);
}
但我弄不懂GetFieldID方法中的"I"和GetMethodID方法中的"()V"这两个参数的含义,
请给我指点指点。谢谢。
|
GetFieldID方法中的"I"指你索取的field为整型的。
GetMethodID方法中的"()V"是指你索取的Method为不带参数的.
建议看看the java tutorial 一书。
另外我要提醒哥们的是:知道这并不一定是高手。
大家互相交流而已
GetMethodID方法中的"()V"是指你索取的Method为不带参数的.
建议看看the java tutorial 一书。
另外我要提醒哥们的是:知道这并不一定是高手。
大家互相交流而已