要回調(diào)java 類結(jié)構(gòu)
public class TrackBox {
public String boxId;
public int x; //中心點(diǎn)的x坐標(biāo)
public int y; //中心點(diǎn)的y坐標(biāo)
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的實(shí)例對象
//先獲得構(gòu)造方法的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);
第三步:調(diào)用TrackBox 的setBoxId方法
//先獲得setBoxId 的MethodID
jmethodID boxMethodID = env->GetMethodID(clazz, "setBoxId", (Ljava/lang/String;)V);
jstring boxID = env->NewStringUTF("1");
//調(diào)用
env->CallObjectMethod(obj, boxMethodID, boxID);
------------------------分割線-----------------------------------
有些情況是直接從java方法傳遞過來對象谷异,例如接口回調(diào)
那就省去第一步和第二步