我使用JNI存储对Java方法对象(obj
)的引用,以便以后从C中调用它:
jobject obj = (*newEnv)->NewObject(newEnv, cls, mid);
其中
newEnv
是我的环境,cls
是我的类ID,而mid
是我的方法ID。一切工作正常,除了在创建此对象以供以后用作引用时,它实际上立即调用了该方法。
我只想稍后创建该对象,而不立即调用该方法。
最佳答案
感谢Gabe Sechan的评论,我得以弄清楚:
jmethodID construct = (*newEnv)->GetMethodID(newEnv,cls,"<init>","()V");
jobject obj = (*newEnv)->NewObject(newEnv, cls, construct);
然后,我可以调用要使用的方法:
(*newEnv)->CallVoidMethod(newEnv, obj, mid);