gpt4 book ai didi

java - 无法将构建器模式的方法调用与已编译的内部类链接起来

转载 作者:行者123 更新时间:2023-11-30 10:46:05 25 4
gpt4 key购买 nike

我正在创建一个 android 应用程序,它使用一个 aar 文件,该文件具有一个使用构建器模式的类。但是,我怀疑这是一个普通的旧 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

我知道 Builder 实现本身没有问题,因为我构建了它,并且在使用时它工作得很好,无需先编译并作为 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);
}
}

任何人都可以阐明可能导致问题的原因吗?

最佳答案

这实际上是一个编译时错误。 IDE 找不到的方法变为红色,并显示“无法解析方法”。

但是,它似乎是 IDE 的错误......至少在运行时找到了方法,因为我测试了它并且在应用程序运行时一切顺利。

我什至检查了调试器,并使用正确的值创建了一个 ProjectConfig 对象,即使对于它说无法解析的方法也是如此。

因此,作为向 JetBrains 的错误报告,这似乎会更好......

关于java - 无法将构建器模式的方法调用与已编译的内部类链接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36757944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com