要回调java 类结构
public class TrackBox {
public String boxId;
public int x; //中心点的x坐标
public int y; //中心点的y坐标
public String localPath; //本地路径
/*public TrackBox() { }*/
public TrackBox(String boxId, int x, int y, String localPath) {
this.boxId = boxId;
this.x = x;
this.y = y;
this.localPath = localPath;
}
public void setBoxId(String boxId) {
this.boxId = boxId;
}
}
第一步:获得java类的class
clazz = env->FindClass("com/example/track/TrackBox");
第二步:获得class的实例对象
//先获得构造方法的MethodID
jmethodID boxMethod = env->GetMethodID(clazz, "<init>", "(Ljava/lang/String;IILjava/lang/String;)V");
jstring boxID = env->NewStringUTF("1");
jint x = 20;
jint y = 30;
jstring local = env->NewStringUTF("abc");
jobject obj = env->NewObject(clazz, boxMethod, boxID, x, y, local);
第三步:调用TrackBox 的setBoxId方法
//先获得setBoxId 的MethodID
jmethodID boxMethodID = env->GetMethodID(clazz, "setBoxId", (Ljava/lang/String;)V);
jstring boxID = env->NewStringUTF("1");
//调用
env->CallObjectMethod(obj, boxMethodID, boxID);
------------------------分割线-----------------------------------
有些情况是直接从java方法传递过来对象,例如接口回调
那就省去第一步和第二步
网友评论