Следует ли использовать геттеры класса в классе toString ()?

При написании метода toString в классе Java следует использовать это поле в toString или следует использовать метод получения класса для этого поля? то есть:

private String name;

public NameClass(String name) {
    this.name = name;
}

public String getName() {
    return this.name;
}

public String toString() {
    return "This is the name:" + this.name;
}

// OR THIS
public String toString() {
    return "This is the name: " + getName();
}

Если getName() не будет более сложным или переопределенным, это не имеет значения.

khelwood 30.05.2018 16:22

Это в основном дело вкуса, я предпочитаю это имя.

Johan 30.05.2018 16:23

на мой взгляд, вы можете просто использовать поле return "This is the name:" + name; И, например, автоматически сгенерированное IDEA toString () использует поля, а не геттеры

Danila Zharenkov 30.05.2018 16:23

Если подумать, это все равно, что задаться вопросом, следует ли использовать поле или геттер класса для создания ... геттера класса. Поскольку он находится в классе, и вы не переопределяете его, это не имеет значения. Если вам нужен полностью объектно-ориентированный подход, используйте геттер класса, но это не имеет значения.

Hearner 30.05.2018 16:24

Спасибо! Некоторое время пытался искать "геттеры в toString" и т. д., Но ничего не нашел на SO. Кажется, мне нужно научиться лучше искать. Спасибо!

Edwin Carlsson 30.05.2018 16:25

Я прочитал оба подхода к этому. С одной стороны, вы можете быть уверены, что любая логика, которая должна выполняться, когда кто-то получит ваш атрибут, будет выполнена, если вы всегда будете использовать свои геттеры (не только в методе toString, но фактически в каждом методе класса). С другой стороны, некоторые люди утверждают, что геттеры должны получать только атрибут, чтобы не было неожиданного поведения. Было бы неплохо почитать опытных людей по этому поводу.

Jorge.V 30.05.2018 16:25

Кроме того, я думаю, если вы не хотите делать что-то особенное в этом "getName ()", код будет более читабельным с использованием "this.name" ... Читатель будет знать, что ничего специально не было сделано с ним.

Shanica 30.05.2018 16:25
Моя стратегия Google по этому вопросу
Hovercraft Full Of Eels 30.05.2018 16:27

@HovercraftFullOfEels посмотрите на это. Это блестяще. Спасибо, господин MasterGoogler!

Edwin Carlsson 30.05.2018 16:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
9
164
0

Другие вопросы по теме