Мы используем ToStringBuilder.reflectionToString()
в наших объектах toString()
. У нас не было таких проблем в производственной среде. Конечно, мы редко используем метод toString()
.
Мы также используем BeanUtils.describe()
, но для другой цели. BeanUtils
использует PropertyUtilsBean
, который хранит внутренний кеш бинов, для которых он выполнил самоанализ. Казалось бы, это дало бы ему преимущество в производительности по сравнению с другими, но немного повредило в источнике ReflexToString, и кажется, что, поскольку в конечном итоге он опирается на реализацию java.lang.Class
, кеширование также вступает в игру.
Любой из них выглядит как жизнеспособный выбор, но BeanUtils.describe()
вернет карту свойств, где mirrorToString вернет отформатированную строку. Я думаю, это зависит от того, что вы хотите сделать с выводом.
Я бы предположил, что если ваше приложение сильно зависит от вызова toString()
для ваших объектов, то конкретная реализация может быть более выгодной.