Sobes.tech
Senior
52

Wie schützt man sich vor Vererbung und Überschreibung des Getters (damit ein Kollege den Getter nicht überschreiben und die Sicherheitskopie entfernen kann)?

Unternehmen wurden gefragt
РТЛабс

Antwort von AI

sobes.tech KI

В Java нельзя полностью запретить переопределение геттера, если он не объявлен как final, но есть несколько подходов для защиты:

  1. Объявить геттер как final — тогда наследники не смогут его переопределить.
public class MyClass {
    private final List<String> data = new ArrayList<>();

    public final List<String> getData() {
        return new ArrayList<>(data); // защитное копирование
    }
}
  1. Сделать класс final — тогда наследование и переопределение невозможно.

  2. Если класс должен быть наследуемым, а геттер — нет, можно сделать геттер приватным или package-private и предоставить доступ через другие методы.

  3. Использовать композицию вместо наследования, чтобы контролировать поведение.

Таким образом, самый простой и надёжный способ — объявить геттер как final, чтобы никто не мог его переопределить и убрать защитное копирование.