Я читаю статью из Эффективного Java, пункт 14. В общедоступных классах используйте методы доступа, а не общедоступные поля. В книге говорится: «Хотя общедоступный класс никогда не будет хорошей идеей напрямую раскрывать поля, это менее вредно, если поля неизменяемы».
Мой вопрос: почему это менее вредно, если поля неизменяемы? Не могли бы вы привести пример из жизни в подтверждение? Вот пример кода в книге.
/ Encapsulation of data by accessor methods and mutators
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() { return x; }
public void setX(double x) { this.x = x; }
public double getY() { return y; }
public void setY(double y) { this.y = y; }
}
Хотя публичному классу не рекомендуется напрямую раскрывать поля, это менее вредно, если поля неизменяемы.
// Public class with exposed immutable fields - questionable
public final class Time {
public final int hour;
public final int minute;
public Time(int hour, int minute) {
this.hour = hour;
this.minute = minute;
}
}