Sobes.tech
Junior — Middle

Πώς μπορεί να υλοποιηθεί μια κλάση ώστε η κατάσταση της να είναι αμετάβλητη μετά τη δημιουργία;

sobes.tech AI

Απάντηση από AI

Για να δημιουργήσετε μια αμετάβλητη (immutable) κλάση στη Java, πρέπει:

  • Να κάνετε την κλάση final ώστε να μην μπορεί να κληρονομηθεί ή να αλλάξει η συμπεριφορά της.
  • Να δηλώσετε όλα τα πεδία της κλάσης ως private final.
  • Να αρχικοποιήσετε όλα τα πεδία μέσω του κατασκευαστή.
  • Να μην παρέχετε setters (μεθόδους για την αλλαγή των πεδίων).
  • Αν τα πεδία είναι αντικείμενα μεταβλητά (π.χ., πίνακες, συλλογές), να δημιουργείτε αντίγραφα αυτών κατά την παράδοσή τους στον κατασκευαστή και κατά την επιστροφή από τους getters.

Παράδειγμα:

public final class ImmutablePerson {
    private final String name;
    private final int age;

    public ImmutablePerson(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

Αυτού του είδους η κλάση, μετά τη δημιουργία του αντικειμένου, δεν επιτρέπει την αλλαγή της κατάστασής του.