Как заменить String catenation на StringBuilder и добавить? - PullRequest
3 голосов
/ 02 февраля 2011

Как можно рекурсивно заменить все цепочки в методе toString на StringBuilder для Java? Есть ли такой плагин в Eclipse? Например: Заменить его:

    return "AccountAddresses ["
            + ", corporateAddresses=" + CommonHelper.isNotNull(corporateAddresses)
            + ", corporateDeliveryMinimum=" + corporateDeliveryMinimum
            + ", depot=" +  CommonHelper.isNotNull(depot)
            + ", depotDeliveryMinimum=" + depotDeliveryMinimum
            + ", preSelectedId=" + preSelectedId
            + ", residentialAddresses=" +  CommonHelper.isNotNull(residentialAddresses)
            + ", residentialDeliveryMinimum=" + residentialDeliveryMinimum
            + "]";

при этом:

    return new StringBuilder("AccountAddresses [")
            .append(", corporateAddresses=").append(CommonHelper.isNotNull(corporateAddresses))
            .append(", corporateDeliveryMinimum=").append(corporateDeliveryMinimum)
            .append(", depot=").append(CommonHelper.isNotNull(depot))
            .append(", depotDeliveryMinimum=").append(depotDeliveryMinimum)
            .append(", preSelectedId=").append(preSelectedId)
            .append(", residentialAddresses=").append(CommonHelper.isNotNull(residentialAddresses))
            .append(", residentialDeliveryMinimum=").append(residentialDeliveryMinimum)
            .append("]").toString();

Ответы [ 5 ]

14 голосов
/ 02 февраля 2011

Это встроенная команда Eclipse.

  • Нажмите на одну из кавычек (") в конкатенации строк.
  • Откройте меню Quick Fix (нажмите Ctrl + 1 на клавиатуре).
  • Выберите Use 'StringBuilder' for String concatenation.

Magic! Ваш

    return "foo" + "bar";

изменено на

    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("foo");
    stringBuilder.append("bar");
    return stringBuilder.toString();
2 голосов
/ 02 февраля 2011

Я не слышал о плагине Eclipse для этого - так что не стесняйтесь игнорировать этот не по теме ответ - но у IntelliJ есть «намерение», которое сделает это за вас (по крайней мере, в 10.0 это делает).* * * * * * * * * * * * * * * * * * * * * * * * *

1 голос
/ 02 февраля 2011

Выполните поиск и замену регулярного выражения:

", ([a-zA-z0-9]+)=" \+ CommonHelper\.isNotNull\(([a-zA-z0-9]+)\)  // Find this

append(", $1=").append(CommonHelper.isNotNull($2))    // and replace with this

Это не завершено, но вы поняли идею.

0 голосов
/ 02 февраля 2011

Я не думаю, что какой-либо плагин сделал бы это для вас ... это было бы бесполезно в любом случае: компилятор Java сделает это лучше, чем кто-либо другой (и если "StringBuilder" когда-нибудь заменит что-то лучше, компилятор Java сможет использовать это «что-то лучшее», если вы явно не используете StringBuilder).

0 голосов
/ 02 февраля 2011

Почему бы вам не переопределить метод toString в вашем классе и реализовать приложение stringbuilder.

...