Шаблон toString в Idea

Рейтинг: 0Ответов: 1Опубликовано: 31.07.2023

Почему Idea в шаблоне метода toString смешивает использование одинарных и двойных кавычек, прибегая к экранированию '\'', вместо того, что бы просто использовать двойные кавычки "'"?

public String toString() {
    return "MyClass{" +
        "name='" + name + '\'' +
        ", url='" + url + '\'' +
        ", port=" + port +
        ", validIps=" + Arrays.toString(validIps) +
        '}';
}

Это кажется неудобным. Есть какой-либо особый смысл?

Ответы

▲ 2

Так определено в Velocity-шаблоне для генерации кода toString по умолчанию.

При желании можно добавить свой шаблон.

  • Вызвать соответствующий диалог Alt+Insert >> Generate toString()

введите сюда описание изображения

  • Нажать кнопку Settings и перейти на вкладку Templates (по умолчанию используется шаблон String concat(+)):

введите сюда описание изображения

  • Можно выбрать другой шаблон, например StringJoiner:

введите сюда описание изображения

Тогда сгенерированный код будет выглядеть совершенно иначе:

@Override
public String toString() {

    return new StringJoiner(", ", Foo.class.getSimpleName() + "[", "]")
            .add("bar='" + bar + "'")
            .add("baz=" + baz)
            .toString();
}

Или же можно скопировать существующий / создать собственный шаблон и использовать его для кодо-генерации.