JNI新的原始类型

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.

Chr*_*ung 7

jint,jdouble等等都没有jobjects.如你所说,它们是原始变量.只需填写它们!

jint someInt = 1;
jdouble someDouble = 3.14159;
Run Code Online (Sandbox Code Playgroud)

重新编辑:我明白了,你想回到盒装类型,如Integer,Double等呀,你贴的包装函数可能是要走的路.

  • @Firat:不,有`Integer.valueOf(int)`,`Double.valueOf(double)`等等; 事实上,这就是在自动拳击中使用的东西.(试试吧!) (2认同)