Consider the custom toString() implementation of a bean:
@Override
public String toString() {
String.format("this is %s", this.someField);
}
This yields this is null if someField is null.
Is there a way to override the default null string representation of null-valued arguments to another text, i.e., ? without calling explicitly replaceAll(...) in the toString method?
Note: The bean inherits from a superclass that could implement Formattable (http://docs.oracle.com/javase/7/docs/api/java/util/Formattable.html) but I just don't seem to understand how to make this work.
EDIT: The snippet is over-simplified for the sake of example but I'm not looking for ternary operator solutions someField==null ? "?" : someField because:
- there can be (potentially) a great many fields involved in
toString()so checking all fields is too cumbersome and not fluent. - other people whom I have little control over (if any) are writing their own subclasses.
- if a method is called and returns null that would either imply calling the method twice or declaring a local variable.
Rather, can anything be done using the Formattable interface or having some custom Formatter (which is final btw.)?
If you don't want to use
replaceAll(), You can assign a default text(String) forsomeField.But if some time this may assign
nullagain. So you can use validation for that case