JNI で新しいプリミティブ型を作成するにはどうすればよいですか。を返す関数がありますjobject
。jint
、jchar
などの返品が可能です。
NewString
、なぜではないNewInteger
、、、などがあります。現時点では、JNI レイヤーでのオートボクシングはありません。NewCharacter
NewDouble
呼び出しを行うことはできますが、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 を取得するためのラッパー関数があります。