Получатели для окончательных переменных
Прямо сейчас я создаю загрузку классов, которые будут содержать мою конфигурацию и все. Все, что я делаю, это сохраняю значения из файла конфигурации.
Более половины кода - это геттеры, и мне интересно, есть ли еще практика получать геттеры или просто обращаться к переменным напрямую.
Итак, это:
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 есть встроенные функции и генерация кода, затраты получателей, как правило, невелики как при написании кода, так и во время выполнения.