Единственный способ раскрыть личные поля - через accessors
aka getters
.
Но вы должны следовать 2 правилам:
Избегать соблазна разоблачить непосредственно все ваши частные поля через геттеры (ide ярлыки). Добавляйте их только в случае необходимости.
Если раскрываемый вами тип не является неизменным, позаботьтесь не о escape references
, вернув защитные копии
Пример:
private Date date;
public Date date() {
return date;
}
Этот код нарушает инкапсуляцию, и это то же самое, что и это.
public Date date;
Чтобы решить эту проблему, у вас есть 2 решения
- Вернуть защитную копию вашей даты
public Date date() {
return new Date(date.getTime());
}
- Использовать неизменную версию Date ->
LocalDate
То же лог c применяется для типов коллекций.