Я бы справился с перегрузкой:
private String formatValue(String value) {
return value;
}
private String formatValue(Date value) {
return MyUtils.formatDate(value, Constant.DATE_FORMAT_YYYYMMDD_HHMMSS);
}
... и исправьте любой код, передающий его null
.
Если вам действительно приходится обрабатывать null
, то:
private String formatValue(String value) {
return value;
}
private String formatValue(Date value) {
return value == null ? null : MyUtils.formatDate(value, Constant.DATE_FORMAT_YYYYMMDD_HHMMSS);
}
Вышеуказанные работы при условии, что тип того, что вы передаете, известен во время компиляции, что обычно имеет место. Но если вам придется учитывать возможность того, что единственный тип, известный во время компиляции, это Object
, вы также можете добавить Object
версию:
private string formatValue(Object value) {
if (value instanceof Date) {
return this.formatValue((Date)value);
}
return value == null ? null : value.toString();
}
Это начинает ощущаться как больше кода, но позволяет нормальному пути (где тип известен) идти прямо к соответствующему методу, и вы предоставите его только в том случае, если вы имеете дело с чем-то динамическим, где вы застряли Object
.
Или вы можете просто иметь версию Object
. У него не меньше проверок, но мне он кажется немного проще и понятнее.