jni返回java对象_jni 返回java对象有什么需要注意的地方

展开全部

JNIEXPORT jobject JNICALL Java_com_example_filltriangle_GL2JNILib_test(JNIEnv* env, jclass tis)

{

jclass m_login_msg = env->FindClass("hzcw/msgdata/LoginMsg");

jmethodID m_method_login_msg_init = env->GetMethodID(m_login_msg,"","()V");

jobject m_login_msg_obj = env->NewObject(m_login_msg, m_method_login_msg_init);

jfieldID  m_fid_controlDictionary = env->GetFieldID(m_login_msg,"controlDictionary","Ljava/util/HashMap;");

// new一个hashmap对象

jclass class_hashmap=env->FindClass("java/util/HashMap");

jmethodID hashmap_construct_method=env->GetMethodID(class_hashmap, "","()V");

jobject obj_hashmap =env->NewObject(class_hashmap, hashmap_construct_method, "");

jmethodID hashmap_put_method= env->GetMethodID(class_hashmap,"put","(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");

// new一个ArrayList对象

jclass class_arraylist=env->FindClass("java/util/ArrayList");

jmethodID arraylist_construct_method=env->GetMethodID(class_arraylist, "","()V");

jobject obj_arraylist =env->NewObject(class_arraylist, arraylist_construct_method, "");

jmethodID arraylist_add_method= env->GetMethodID(class_arraylist,"add","(Ljava/lang/Object;)Z");

// new一个ControlDictionaryValue对象

jclass m_cls_ControlDictionaryValue = env->FindClass("hzcw/datastruct/ControlDictionaryValue");

jmethodID m_mid_ControlDictionaryValue = env->GetMethodID(m_cls_ControlDictionaryValue,"","()V");

jobject m_obj_ControlDictionaryValue = env->NewObject(m_cls_ControlDictionaryValue, m_mid_ControlDictionaryValue, "");

// 获取ControlDictionaryValue对象的e68a8462616964757a686964616f31333363373763value变量

jfieldID  m_fid_ControlDictionaryValue_value = env->GetFieldID(m_cls_ControlDictionaryValue,"value","Ljava/lang/String;");

env->SetObjectField(m_obj_ControlDictionaryValue,m_fid_ControlDictionaryValue_value,env->NewStringUTF("牙科"));

env->CallBooleanMethod(obj_arraylist, arraylist_add_method, m_obj_ControlDictionaryValue);

env->CallObjectMethod(obj_hashmap,hashmap_put_method,env->NewStringUTF((char*)"科室"), obj_arraylist);

env->SetObjectField(m_login_msg_obj,m_fid_controlDictionary,obj_hashmap);

env->DeleteLocalRef(m_obj_ControlDictionaryValue);  //删除局部引用

env->DeleteLocalRef(obj_arraylist);  //删除局部引用

env->DeleteLocalRef(obj_hashmap);  //删除局部引用

return m_login_msg_obj;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值