Hello
I've just started playing around with JNI in order to create a Java API layer on top of an existing C++ library. I figured out how to create an instance of a Java class in native code using env->NewObject() method. My question is who takes care of cleaning up this object? Is it my responsibility ?
jclass cl = env->FindClass("MyJavaClass");
jmethodID ctorId = env->GetMethodID(cl, "<init>", "()V");
jobject obj = env->NewObject(cl, ctorId);
// set member field (int)
jfieldID fid = env->GetFieldID(cl, "i", "I");
env->SetIntField(obj, fid, 5);
// set member field (string)
fid = env->GetFieldID(cl, "buffer", "Ljava/lang/String;");
jstring jstr = env->NewStringUTF("hello from cpp");
env->SetObjectField(obj, fid, jstr);
// return object back to Java
return obj;
Thanks
Amit