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