如何在C ++中使用JNI使用java map(java / util / Map)

时间:2018-04-24 11:47:32

标签: java c++ java-native-interface

我需要调用一个java类函数,它返回一个字符串map作为键,一个class对象列表作为value。我使用JNI从c ++调用java函数。

我已成功调用该函数并将返回的java映射存储在JNI'jobject'变量中。现在我需要迭代map中的元素并使用它们的值,但是无法找到如何做到这一点。

java map的结构就像

'Map<String, List<ErrorLogger.ErrorObject>>'

其中ErrorLogger是'public interface ErrorLogger',ErrorObject在ErrorLogger中定义为'public static final class ErrorObject'。

在C ++代码中:我在jmapobj中获取此地图

//Create Map object
jclass clsMap = env->FindClass("java/util/Map");
jmethodID constructorID = env->GetMethodID(clsMap, "<init>", "()V");
jobject jmapobj = env->NewObject(clsMap, constructorID);

//Call method
jmapobj = env->CallStaticObjectMethod(Cls, method, arg);

有人可以帮助我。

0 个答案:

没有答案