Получатели для окончательных переменных

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

Более половины кода - это геттеры, и мне интересно, есть ли еще практика получать геттеры или просто обращаться к переменным напрямую.

Итак, это:

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

    final String name;

    public final String getName()
    {
        return name;
    }
}

Или же:

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

    public final String name;
}

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

2 ответа

Решение

Инкапсуляция данных с помощью геттеров может обеспечить несколько преимуществ, в том числе:

  • Вы можете изменить поле на другое представление, не затрагивая абонентов.
  • Вы можете добавить дополнительный код в геттер.
  • Вы можете реализовать интерфейс, который обеспечивает геттеры.
  • Вы можете предоставить доступ только для чтения к полям, даже если они не были final,

Я знаю, что вы можете использовать общедоступные статические поля final с неизменяемыми типами, такими как System.out например. Однако я добавляю геттеры в поля экземпляра.

Я согласен с вами, хотя, едва ли вред, выставляющий финал String, Остерегайтесь изменчивых типов, все же. Более того, поскольку в IDE есть встроенные функции и генерация кода, затраты получателей, как правило, невелики как при написании кода, так и во время выполнения.

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