Java toString()如何返回String消息代替null
Posted
技术标签:
【中文标题】Java toString()如何返回String消息代替null【英文标题】:Java toString() How to return String message in place of null 【发布时间】:2020-02-01 01:19:55 【问题描述】:如何在返回 null 的字段中打印“错误”字符串消息?这是我想要做的:
当传递一个动物对象时,toString()
方法应该返回一个如下所示的字符串。
Name: "fluffy"
Breed: Pitbull
Age: Data not available
从上面的示例可以看出,字符串包含每个字段的标签,后跟一个冒号和存储在该字段中的数据。我可以像下面的示例一样打印字符串(注意 Age 缺少数据,因为它为空)。
Name: "fluffy"
Breed: Pitbull
Age:
我已经像这样写了toString()
方法
public String toString()
return "\n" +
"\nName: " + this.name +
"\nBreed: " + this.breed +
"\nAge: " + this.age +
"\n";
当字段为空或为空时,我希望将数据替换为“无可用数据”消息。
我尝试过使用条件语句
@Override
public String toString()
String errorMessage = "Data not available";
if (name == null)
System.out.println(errorMessage);
if (breed == null)
System.out.println(errorMessage);
...
我也试过用 for each 循环遍历
@Override
public String toString()
for (String field: fields)
if (field != null)
return "\n" +
"\nName: " + this.name +
"\nBreed: " + this.breed +
"\nAge: " + this.age +
"\n";
else (field == null)
return "Data not available";
我已经查看了此处的其他提要,但仍然不太了解如何确保每个字段(如果为 null)收到错误消息。 以下是我在 *** 上查看过的帖子列表: Returning a string with toString java ,java toString() is returning null from class , java toString() returning this
提前感谢您的帮助!我是编码新手,我非常感谢一路帮助我理解的所有人。
【问题讨论】:
【参考方案1】:class Dog
private static final String DEFAULT_MESSAGE = "No Data Available";
private final String name;
private final String breed;
private final Integer age;
public Dog(String name, String breed, Integer age)
this.name = name;
this.breed = breed;
this.age = age;
@Override
public String toString()
return String.format("name=%s\nbreed=%s\nage=%s",
name == null ? DEFAULT_MESSAGE : name,
breed == null ? DEFAULT_MESSAGE : breed,
age == null ? DEFAULT_MESSAGE : age);
【讨论】:
这没关系,我还想问一下 OP for 循环中的fields
变量是什么。如果fields
将包含所有字段,则 toString 可以正确附加例如字符串生成器。无论如何,OP 提供的代码是不够的,而且情况如此狭窄,删除final
并默认将对象成员分配给DEFAULT_MESSAGE
将简化toString
并仍然解决问题。【参考方案2】:
你需要结合你的两次尝试。
public String toString()
String errorMessage = "Data not available";
String n = name;
if (n == null) n = errorMessage;
String b = breed;
if (b == null) b = errorMessage;
String a = age;
if (a == null) a = errorMessage;
return "\n" +
"\nName: " + n +
"\nBreed: " + b +
"\nAge: " + a +
"\n";
【讨论】:
以上是关于Java toString()如何返回String消息代替null的主要内容,如果未能解决你的问题,请参考以下文章
java 中 一般打印对象不都是需要重写toString()方法吗?