Рассмотрим пользовательскую реализацию toString()
компонента:
@Override
public String toString() {
String.format("this is %s", this.someField);
}
Это дает значение this is null
если someField
имеет значение NULL.
Есть ли способ переопределить стандартное представление null
строки нулевых аргументов другому тексту, т.е. ?
без вызова явно replaceAll(...)
в методе toString
?
Примечание. Боб наследуется от суперкласса, который может реализовать Formattable
(http://docs.oracle.com/javase/7/docs/api/java/util/Formattable.html), но я просто не понимаю, как сделайте эту работу.
EDIT: фрагмент упрощен для примера, но я не ищу тройные операторские решения someField==null? "?": someField
someField==null? "?": someField
someField==null? "?": someField
потому что:
- может быть (потенциально) большое количество полей, вовлеченных в
toString()
поэтому проверка всех полей слишком громоздка и не является беглостью. - другие люди, которым я мало контролирую (если они есть), пишут собственные подклассы.
- если метод вызывается и возвращает значение null, которое подразумевало бы вызов метода дважды или объявление локальной переменной.
Скорее всего, что-то можно сделать с использованием интерфейса Formattable
или с помощью какого-то пользовательского Formatter
(который является final
btw.)?