我们如何在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);
}
我有包装函数来获取Class和MethodID。
最佳答案
jint
和jdouble
等不是jobjects
。如您所说,它们是原始变量。只需填写它们!
jint someInt = 1;
jdouble someDouble = 3.14159;
重新编辑:我知道,您想返回装箱的类型,例如
Integer
,Double
等。是的,您发布的包装器功能可能是解决方法。