我目前正在通过JNI在delphi中实现jar文件。 这是我的问题:我无法通过java实现的构建器创建对象。
这里是java代码:
public class MyObject {
// .. code
public static class Builder {
protected MyObject instance;
public Builder() {
this.instance = new MyObject
}
public Builder withString(String s) {
instance.string = s;
return this;
}
public MyObject Build() {
// check object values
return instance;
}
}
}
如您所见,构建器类是对象的子类。
在delphi中,我使用此代码访问构建器:
jClass := JNIEnv.FindClass('package/MyObject$Builder');
jMid := JNIEnv.GetMethodID(jClass, '<init>', '()V');
jObj := JNIEnv.NewObjectV(jClass, jMid, '');
_jMid := JNIEnv.GetMethodID(jClass, 'withString', '(Ljava/lang/String;)package/MyObject$Builder;');
_jObj := JNIEnv.CallObjectMethodV(jObj, _jMid, 'string');
但我似乎无法使其正常工作,我总是遇到访问冲突。
提前致谢!