在我的代码中,我做了很多反射查找,所以我试图以某种方式改进它。
这是我的 jni setter 方法的示例:
JNIEXPORT jobject JNICALL
Java_org_orman_mapper_Model_fieldSetFloat(JNIEnv * env, jobject obj, jobject model, jstring field_name, jstring field_type, jfloat value, jclass clazz)
{
const char* utf_string_name = (*env)->GetStringUTFChars (env, field_name, 0);
const char* utf_string_type = (*env)->GetStringUTFChars (env, field_type, 0);
jfieldID id = (*env)->GetFieldID(env, clazz, utf_string_name, utf_string_type);
(*env)->SetFloatField(env, model, id, value);
return model;
}
调用的本质是SetFloatField
,它是否跳过任何 java 安全检查?
我没有注意到性能上的任何提升。