首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在HashSet<Integer>中添加C++ "int“?

如何在HashSet<Integer>中添加C++ "int“?
EN

Stack Overflow用户
提问于 2014-04-25 09:14:12
回答 1查看 537关注 0票数 2

如何通过JNI将cpp set值传递给java HashSet?

代码语言:javascript
复制
jobject getJintSet(std::set<int> *stdSet){
      if (stdSet == NULL) {
            return NULL;
        }
        JniMethodInfo t;
        JniHelper::getMethodInfo(t
                                 , "java/util/HashSet"
                                 , "<init>"
                                 , "(I)V");
        jobject ret = t.env->NewObject(t.classID, t.methodID,stdSet->size());

        JniHelper::getMethodInfo(t
                                 , "java/util/HashSet"
                                 , "add"
                                 , "(Ljava/lang/Object;)Z");

        for (std::set<int>::iterator it = stdSet->begin(); it != stdSet->end(); it++) {
            jobject k = *it;
            t.env->CallObjectMethod(ret, t.methodID, k); //Here is the problem 
           //the HashSet object type is Integer but a cpp int value is being passed,
          // then it crashed.

        }
        return ret;
}
EN

回答 1

Stack Overflow用户

发布于 2014-04-25 11:42:18

Java的泛型是通过类型擦除实现的。因此,HashSet可以包含您在其中放入的任何类型。当然,返回某个类型的HashSet也是方法约定的一部分。

如果想要添加一个Integer值,您必须创建一个“Integer /lang/Integer;”对象。

如果您希望添加int值,只需键入k作为jint,而不是jobject,以匹配您对"Z“的使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23282563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档