При написании метода 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();
}
Это в основном дело вкуса, я предпочитаю это имя.
на мой взгляд, вы можете просто использовать поле return "This is the name:" + name; И, например, автоматически сгенерированное IDEA toString () использует поля, а не геттеры
Если подумать, это все равно, что задаться вопросом, следует ли использовать поле или геттер класса для создания ... геттера класса. Поскольку он находится в классе, и вы не переопределяете его, это не имеет значения. Если вам нужен полностью объектно-ориентированный подход, используйте геттер класса, но это не имеет значения.
Спасибо! Некоторое время пытался искать "геттеры в toString" и т. д., Но ничего не нашел на SO. Кажется, мне нужно научиться лучше искать. Спасибо!
Я прочитал оба подхода к этому. С одной стороны, вы можете быть уверены, что любая логика, которая должна выполняться, когда кто-то получит ваш атрибут, будет выполнена, если вы всегда будете использовать свои геттеры (не только в методе toString, но фактически в каждом методе класса). С другой стороны, некоторые люди утверждают, что геттеры должны получать только атрибут, чтобы не было неожиданного поведения. Было бы неплохо почитать опытных людей по этому поводу.
Кроме того, я думаю, если вы не хотите делать что-то особенное в этом "getName ()", код будет более читабельным с использованием "this.name" ... Читатель будет знать, что ничего специально не было сделано с ним.
@HovercraftFullOfEels посмотрите на это. Это блестяще. Спасибо, господин MasterGoogler!




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