Какой самый классный класс, который вы использовали или видели? Что сделало его приятным

Позволяет ему писать приятные сообщения 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 для меня. Если я изменю код, я удаляю метод и регенерирую.