JNI: Create HashMap

后端 未结 5 777
失恋的感觉
失恋的感觉 2020-12-15 23:55

How do I create a HashMap object in JNI?

5条回答
  •  失恋的感觉
    2020-12-16 00:34

    Here is code, you will need to modify to work

    jclass mapClass = (*env)->FindClass(env, "java/util/HashMap");
    if(mapClass == NULL)
    {
        return NULL;
    }
    
    
    jsize map_len = 1;
    
    jmethodID init = (*env)->GetMethodID(env, mapClass, "", "(I)V");
    jobject hashMap = (*env)->NewObject(env, mapClass, init, map_len);
    
    jmethodID put = (*env)->GetMethodID(env, mapClass, "put",
                "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    
    while( ... )
    {
        jint key = ...;
        size_t sz = t->count;
        jbyteArray dd = (*env)->NewByteArray(env, sz);
        for(i = 0; i < sz; i++)
        {
            (*env)->SetByteArrayRegion(env, dd, i, 1, *data++);
        }
    
        (*env)->CallObjectMethod(env, hashMap, put, key, dd);
    
        (*env)->DeleteLocalRef(env, key);
        (*env)->DeleteLocalRef(env, dd);
    }
    
    (*env)->DeleteLocalRef(env, hashMap);
    (*env)->DeleteLocalRef(env, mapClass);
    

提交回复
热议问题