gpt4 book ai didi

java - java中调用构造函数时如何忽略null

转载 作者:行者123 更新时间:2023-12-01 17:50:22 24 4
gpt4 key购买 nike

这是我的代码。我尝试返回包含不同参数的对象。

public class A{

ResponseObj responseObj = null;
public ResponseObj test(){
if(something){
responseObj = new ResponseObj("k","l");
}
else{
responseObj = new ResponseObj("x","y","z");
}
}

return responseObj;
}

使用两个构造函数创建了 ResponseObj 类。

public class ResponseObj{

String a;
String b;
String c;
String d;

public ResponseObj(String a, String b){
this.a = a;
this.b = b;
}
public ResponseObj(String a, String b,String c){
this.a = a;
this.b = b;
this.c = c;
}

}

如果条件通过,

a:"k",
b:"l",
c:null,
d:null

否则条件通过,

a:"x",
b:"y",
c:"z",
d:null

但我需要从输出中删除空值

输出

调用 if 条件,

a:"k",
b:"l",

调用else条件,

a:"x",
b:"y",
c:"z"

如果这不是正确的方法,请通知我。谢谢

最佳答案

构造函数的作用不是删除另一个方法执行的显示值。
该对象有一个状态,null 字段构成该状态的一部分。
您正在寻找的是实现一种仅输出非 null 字段的方法。

尝试类似:

public class ResponseObj {
...
public void displayNotNullValues(){
StringBuilder finalMsg = new StringBuilder();
appendIfNotNull(finalMsg, "a", a);
appendIfNotNull(finalMsg, "b", b);
appendIfNotNull(finalMsg, "c", c);
appendIfNotNull(finalMsg, "d", d);
System.out.println(finalMsg.toString());
}

private void appendIfNotNull(StringBuilder finalMsg, String name, String value){
if (value != null){
if (finalMsg.length()>0){
finalMsg.append(",");
finalMsg.append("\n");
}
finalMsg.append(name + " : ");
finalMsg.append("\"");
finalMsg.append(value);
finalMsg.append("\"");
}
}
}

使用示例:

new ResponseObj("k","l").displayNotNullValues();
System.out.println("----");
new ResponseObj("x","y","z").displayNotNullValues();

输出:

a : "k",

b : "l"


a : "x",

b : "y",

c : "z"

关于java - java中调用构造函数时如何忽略null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50916556/

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