如何将 cocos2d ValueMap 作为 HashMap 发送到 Java
How to send cocos2d ValueMap to Java as HashMap?
我有cocos2d:: ValueMap
:
ValueMap map;
map["key1"] = "value1";
map["key2"] = 1;
map["key3"] = true;
我想把它作为HashMap<String,Object>
发送到Java。
所以我写了以下代码来生成jobject hashMapObj
,我想用值填充它:
jclass hashMapClass= jniGetInstance.env->FindClass("java/util/HashMap");
jmethodID hashMapInit = jniGetInstance.env->GetMethodID(hashMapClass, "<init>", "(I)V");
jobject hashMapObj = jniGetInstance.env->NewObject(hashMapClass, hashMapInit, values.size());
//javap -s -p java.util.HashMap | grep -A 1 put(
jmethodID hashMapId = jniGetInstance.env->GetMethodID(hashMapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
for (auto it : map) { //https://github.com/cocos2d/cocos2d-x/blob/v3/cocos/base/CCValue.h
switch (it.second.getType()) {
case cocos2d::Value::Type::BOOLEAN:
jniGetInstance.env->CallObjectMethod(hashMapObj, hashMapId, "put",
jniGetInstance.env->NewStringUTF(
it.first.c_str()),
it.second.asBool());
break;
//...
default:
break;
}
}
我排队崩溃:
jniGetInstance.env->CallObjectMethod(
hashMapObj,
hashMapId,
"put",
jniGetInstance.env->NewStringUTF(
it.first.c_str()),
it.second.asBool());
JNI 在应用程序中检测到错误:使用了无效的 J对象0xd85d4aa0
编辑
jniGetInstance.env->CallObjectMethod(hashMapObj, hashMapId, "put","someString", true);
失败并出现相同的错误,因此问题出在hashMapObj
有什么想法吗?
更改
jniGetInstance.env->CallObjectMethod(hashMapObj, hashMapId, "put",
jniGetInstance.env->NewStringUTF(
it.first.c_str()),
it.second.asBool());
自
jniGetInstance.env->CallObjectMethod(hashMapObj, hashMapId,
jniGetInstance.env->NewStringUTF(it.first.c_str()),
it.second.asBool());
由于"放置"方法仅接受 2 个参数。
还要确保it.second.asBool()
返回jboolean
- 它与C++ bool
类型不同。
相关文章:
- 正在寻找C++不可变的hashset/hashmap
- 在java中解决这段代码时面临循环中的问题
- 尝试用java代码编译和运行c++代码
- 在这种情况下,java对象是否可以调用本机函数
- 在java中读取c++字节的位字段
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 使用已使用 java 编码的 openssl 解码数据
- SWIG Java 在使用 -DSWIGWORDSIZE64 时将int64_t转换为 jlong
- Android Java USB for native cpp
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- C++ equivalent to Java Map getOrDefault?
- C++ 中的 Java 样式枚举
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- 加密在 Windows、C++ 和 Java 中传输中的数据
- Java从C++回调到C++回调
- 在使用 JNI 将 c++ unordered_map转换为 java hashMap之前将其转换为 java hash
- Performance of C++ std::unordered_map vs Kotlin/Java HashMap
- 如何将 cocos2d ValueMap 作为 HashMap 发送到 Java
- C++将 HashMap<string、布尔>对象返回到 Java
- Java hashmap.get() in c++