考虑 bean 的自定义 toString()
实现:
@Override
public String toString() {
String.format("this is %s", this.someField);
}
这会产生 this is null
如果 someField
为空。
有没有办法覆盖默认的 null
空值参数的字符串表示到另一个文本,即 ?
而不显式调用 replaceAll(...)
toString
方法?
注意:bean 继承自可以实现的超类 Formattable
( http://docs.oracle.com/javase/7/docs/api/java/util/Formattable.html ) 但我只是不似乎不明白如何使这项工作。
编辑:为了示例,该代码段过于简化,但我不是在寻找三元运算符解决方案 someField==null ? "?" : someField
因为:
toString()
中可能(可能)涉及很多字段,因此检查所有字段过于繁琐且不流畅。- 我几乎无法控制的其他人(如果有的话)正在编写他们自己的子类。
- 如果一个方法被调用并返回 null ,这意味着调用该方法两次或声明一个局部变量。
相反,是否可以使用 Formattable
界面或具有一些自定义 Formatter
(顺便说一句,是 final
)?
原文由 VH-NZZ 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 Java 8,您现在可以为此使用 Optional 类: