Comment pouvons-nous nouveaux types primitifs dans JNI. J'ai une fonction qui renvoie un jobject
. Il est possible de revenir jint
, jchar
, etc.JNI nouveaux types primitifs
Il y a NewString
, pourquoi ne pas NewInteger
, NewCharacter
, NewDouble
, etc. Il n'y a pas autoboxing à couche JNI au moment.
Je peux aller avec le NewObject
appel, mais ce sera trop frais généraux pour créer des types primitifs.
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);
}
J'ai fonctions wrapper pour obtenir classe et methodID.
@Firat - si vous vous préoccupez de ce genre de chose, c'est un signe que votre application a * trop de JNI *. –
Notre API Java utilise le code C. Tout dépend de la performance des appels JNI. C'est pourquoi je fais de mon mieux pour rendre cette partie aussi rapide que possible. – Firat