我们如何在JNI中新建基本类型。我有一个返回jobject的函数。可以返回jintjchar等。

NewString,为什么没有NewIntegerNewCharacterNewDouble等。目前在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);
}

我有包装函数来获取Class和MethodID。

最佳答案

jintjdouble等不是jobjects。如您所说,它们是原始变量。只需填写它们!

jint someInt = 1;
jdouble someDouble = 3.14159;

重新编辑:我知道,您想返回装箱的类型,例如IntegerDouble等。是的,您发布的包装器功能可能是解决方法。

10-06 14:46