2
我正在创建一个使用具有使用构建器模式的类的aar文件的Android应用程序。不过,我怀疑这是一个普通的Java问题。无法链接编译内部类的构建器模式的方法调用
一切工作正常,如果我不使用任何的链接setter方法:
ProjectConfig config = new ProjectConfig$Builder("reqparam0")
.build() // this works fine
但是,一旦我尝试使用任何的链接setter方法,
ProjectConfig config = new ProjectConfig$Builder("reqParam0")
.contactEmail("optParam0")
.build() // ERROR - can't find build() method
我知道,生成器实现本身没有问题,因为我构建它时,它在没有首先编译并打包到另一个应用程序中作为aar文件使用时就可以正常工作。
请注意,我需要使用'$'存取器而不是普通的'。'。因为它是一个已编译的类。我怀疑这也与这个问题有关。
这里是类:
public class ProjectConfig {
private final String apiKey;
private final boolean batterySavingMode;
private final String contactEmail;
public ProjectConfig(Builder builder) {
apiKey = builder.apiKey;
batterySavingMode = builder.batterySavingMode;
contactEmail = builder.contactEmail;
}
public String getApiKey() {
return apiKey;
}
public boolean isBatterySavingMode() {
return batterySavingMode;
}
public String getContactEmail() {
return contactEmail;
}
public static class Builder{
// Required parameters
private String apiKey;
// Optional parameters
private boolean batterySavingMode = false;
private String contactEmail = null;
public Builder(String apiKey){
this.apiKey = apiKey;
}
public Builder batterySavingMode(boolean enabled){
this.batterySavingMode = enabled;
return this;
}
public Builder contactEmail(String contactEmail) {
this.contactEmail = contactEmail;
return this;
}
public ProjectConfig build(){
return new ProjectConfig(this);
}
}
}
任何人都可以摆脱什么可能会造成这个问题的一些轻?
我建议你发布相关的代码和完整的错误。 –
Builder模式以正常方式实现,链式方法返回'this'。 还有,我的IDE说链式方法返回“ExampleClass.Builder”而不是“ExampleClass中$生成器” – Cognitio
通常'$'是指一个内部类,而不是一个公共类。但没有看到相关的代码,我会放弃在这个问题 –