java - java中调用构造函数时如何忽略null
问题描述
这是我的代码。我尝试返回包含不同参数的对象。
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
通过 else 条件通过,
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();
输出 :
一个:“k”,
b:“l”
一个:“x”,
经过”,
c:“z”
推荐阅读
- amazon-web-services - AWS cognito 自定义域 A 记录没有实际目标
- android - 无法使用 Kotlin 以编程方式检索资源
- django - 如何在 Django 中测试创建函数?
- powerbi - PowerBI 中最有效的 Snowflake 连接类型?
- sql - System.Data.SqlClient.SqlException:''学生'附近的语法不正确
- python-3.x - Python:如何以 OOP 方式处理它?
- swift - SwiftUI 中的@EnvironmentObject - 无法切换布尔值
- mysql - 为 uuid 设置默认值时出现 SQL 语法错误
- c++ - 如何在 C++ 中将整数转换为其数字的数组
- spring - 当我添加 Spring 批处理配置时出现错误