gpt4 book ai didi

java - 无法将元素添加到 map - 不支持的操作异常

转载 作者:行者123 更新时间:2023-12-02 08:46:16 29 4
gpt4 key购买 nike

我在向这个可变映射插入元素时遇到问题,我不明白为什么?我可以看到它返回 Map,因此放入元素应该不是问题。你能帮我吗?

myClient.authentications.put("basicAuthentication", httpBasicAuth)

身份验证如下所示:

public Map<String, Authentication> getAuthentications() {
return authentications;
}
private Map<String, Authentication> authentications;

我在这里缺少什么吗?

编辑1:添加更多代码以进行清除

HttpBasicAuth只是一个实现Authentication的基础类

public class HttpBasicAuth implements Authentication {
private String username;
private String password;

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

@Override
public void applyToParams(List<Pair> queryParams, Map<String, String> headerParams) {
if (username == null && password == null) {
return;
}
headerParams.put("Authorization", Credentials.basic(
username == null ? "" : username,
password == null ? "" : password));
}

 val httpBasicAuth = HttpBasicAuth()
httpBasicAuth.username = "user"
httpBasicAuth.password = "pass"
myClient.authentications.put("basicAuthentication", httpBasicAuth)

最佳答案

目前,默认情况下此字段具有 null 值,因此您不能对其调用任何方法。所以当你打电话时:

myClient.authentications.put("basicAuthentication", httpBasicAuth)

您正在尝试在 null 上调用方法 put()

要解决这个问题,您可以更改初始化:

private Map<String, Authentication> authentications;

至(Java 语言):

private Map<String, String> authentications = new HashMap<>();

或进入(Kotlin):

private val authentications: Map<String, Authentication> = mapOf();

在这些更改之后,该字段将使用空数组而不是null进行初始化。请记住,当您有一些基于它的逻辑时(例如您正在检查authentications == null),此更改非常重要。

关于java - 无法将元素添加到 map - 不支持的操作异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61061873/

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