Какой самый классный класс, который вы использовали или видели? Что сделало его приятным
Позволяет ему писать приятные сообщения toString - это скучная грязная задача, которая должна быть выполнена, поскольку она действительно может быть полезной для инсекции в отладчике или протоколировании.
Какие функции вы хотите или хотите, должны быть в таком помощнике...
-
свойства демпинга должны называться w/labels.
name = mP country = Австралия...
-
значения, которые по умолчанию должны быть по умолчанию, должны быть пропущены.
- Нет смысла печатать множество свойств, равных 0 или null.
- Если вы установили метку, а значение равно null, не включайте также.
-
разделитель между меткой и значением должен быть обновляемым, и он должен быть автоматически вставлен между метками и значениями, когда они будут добавлены.
-
он также должен автоматически вставлять разделитель по вашему выбору.
Если вы хотите, чтобы между запятыми были значения между значениями при включении массива.
-
он должен автоматически указывать строковые значения... потому что важно знать, где именно начинается и заканчивается строка.
* name = mP state = "Новый Южный Уэльс"
-
когда добавляется список, карта или набор, должны соблюдаться правила о цитировании строк, используя разделитель set и т.д. Пожалуйста, просто не сбрасывайте Collection.toString().
У меня есть несколько других в вопросе, которые я улучшаю, вы можете перечислить свои собственные идеи, наблюдения и т.д.
new ToStringBuilder()
.setLabelValueSeparator('=')
.label("name")
.value(Country.AUSTRALIA) // -> returns "Australia" without the quotes.
.label("day of death")
.value(null) //
.label("numbers")
.valueSeparator(",");
.value(Arrays.asList( 1, 2, 3 )
.build();
конечно, приведет к "name=" Австралия "числам = 1, 2, 3;
Ответы
Ответ 1
Apache ToStringBuilder имеет достойную имптентификацию из коробки:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
На самом деле я сейчас смотрю, как получить его вывод немного красивее. ReflectionStringBuilder, похоже, предлагает еще одну настройку. В частности мне это нравится:
@Override
public String toString() {
StandardToStringStyle style = new StandardToStringStyle();
style.setFieldSeparator(", ");
style.setUseClassName(false);
style.setUseIdentityHashCode(false);
return new ReflectionToStringBuilder(this, style).toString();
}
Результат выглядит следующим образом:
[[email protected], age=16, createdDate=<null>, favoriteColor=blue, id=2]
Ответ 2
Я просто использую свою IDE для генерации toString для меня. Если я изменю код, я удаляю метод и регенерирую.