Bonjour,
je tourne un peu en rond sur un soucis.
Je passe une map<String,String> param de type java hashmap au jni, je stocke des parameter typeid,jvalue et je souhaite la convertir en std::map pour la mettre dans un message
de cette façon, je n'ai pas besoin de spécifier le type de parameter et sa valeur.
j'ai vu beaucoup d'exemple pour écrire dans une map du jni vers le java mais pas l'inverse. c'est alimenter en externe par l'utilisateur en java.
Surtout que j'ai besoin de faire une itération sur la map avec un for soit par un index élément, soit par sa clé selon sa liste de clé. j'ai vu un truc mais c'est complexe. je cherche quelque de plus simple sans avoir à appeler toutes les méthodes
qu'on doit faire en java.
Si je pouvais bloucler sur le numéro d'élement en fonction de la taille avec un count sans passer par la clé, ca aurait été simple, mais je n'ai vu ca que sur les liste. pas sur les map.
J'ai rien vu de simple pour faire l'inverse ce qui est fait ci dessous. lire hashmap en arguement de la méthode JNI et écrire dans une std::map via une fonction c++ ou un tableau;
Merci pour vos infos ou vos liens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 jclass hashMapClass= env->FindClass(env, "java/util/HashMap"); jmethodID hashMapInit = env->GetMethodID(env, hashMapClass, "<init>", "(I)V"); jobject hashMapObj = env->NewObject(env, hashMapClass, hashMapInit, mMap.size()); jmethodID hashMapOut = env->GetMethodID(env, hashMapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); for (auto it : mMap) { env->CallObjectMethod(env, hashMap, put, env->NewStringUTF(it->first.c_str()), env->NewStringUTF(it->second.c_str())); }
cdt
JP
Partager