Fir*_*rat 5 java primitive autoboxing java-native-interface types
我们怎样才能在JNI中使用新的原始类型.我有一个函数返回一个jobject.这是可能的返回jint,jchar等等.
还有NewString,为什么不NewInteger,NewCharacter,NewDouble,等有一个在目前JNI层没有自动装箱.
我可以使用NewObject调用,但这将是创建基元类型的过多开销.
jobject NewInteger(JNIEnv* env, jint value)
{
jclass cls = FindClass(env, "java/lang/Integer");
jmethodID methodID = GetMethodID(env, cls, "<init>", "(I)V", false);
return env->NewObject(cls, methodID, value);
}
Run Code Online (Sandbox Code Playgroud)
我有包装函数来获取Class和MethodID.
jint,jdouble等等都没有jobjects.如你所说,它们是原始变量.只需填写它们!
jint someInt = 1;
jdouble someDouble = 3.14159;
Run Code Online (Sandbox Code Playgroud)
重新编辑:我明白了,你想回到盒装类型,如Integer,Double等呀,你贴的包装函数可能是要走的路.