gpt4 book ai didi

java - 在 Java 中检查空值

转载 作者:行者123 更新时间:2023-11-29 09:59:54 26 4
gpt4 key购买 nike

我正在尝试修改从服务器中提取一些 JSON 的 Android 应用..

JSONObject mResult = new JSONObject((String) result);

然后使用它从我的 Sponsor 类构造一个对象..

Gson mGson = new Gson();
mSponsor = mGson.fromJson(mResult.getJSONObject("data").getJSONObject("sponsor").toString(), Sponsor.class);

赞助商类只是一个带有 setter 和 getter 的外壳,没有完成任何逻辑。像这样:

public class Sponsor {

@SerializedName("address1")
private String Address1;
@SerializedName("address2")
private String Address2;

public Sponsor(String address1, String address2) {
Address1 = address1;
Address2 = address2;
}

public Sponsor() {
Address1 = "";
Address2 = "";
}

public String getAddress1() {
return Address1;
}

public void setAddress1(String address1) {
Address1 = address1;
}

public String getAddress2() {
return Address2;
}

public void setAddress2(String address2) {
Address2 = address2;
}
}

应用程序将地址放在 TextView 中,如下所示:

txtAddress = (TextView) view.findViewById(R.id.txt_sponsor_address);
txtAddress.setText(mSponsor.getAddress1() + "\n" + mSponsor.getAddress2());

这一切都有效,除非服务器为 address2 返回 null,在这种情况下,文本“null”将打印在 TextView 中,而 address2 应该在该位置。

我的问题是如何摆脱“null”?

我尝试了一些不同的东西,从一个简单的三元语句开始,然后变得越来越冗长,但没有任何效果。

这是我迄今为止尝试过的最新、最可笑的事情:

String addr2 = ((String) mSponsor.getAddress2()).trim();
String a2;
if((addr2 == "null") || (addr2 == "")) a2 = (String) "";
else a2 = (String) addr2;

txtAddress.setText(mSponsor.getAddress1() + "\n" + a2);

这会导致应用程序在我打开该 Activity 时崩溃。

我是 Java 菜鸟,所以如果可以请提供引用。

最佳答案

“getAddress2()”未返回文字字符串“null”。它返回一个 null 引用,当您在连接中打印它时,StringBuilder 会将其转换为“null”字符串。这就是当您尝试修剪单词时它会崩溃的原因。

修复它的一个简单方法是像这样将三元运算符放在 getter 本身中:

public String getAddress2() {
return (Address2 == null) ? "" : Address2;
}

现在您永远不会返回空引用,您可以安全地使用它而无需任何检查。

关于java - 在 Java 中检查空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37617799/

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