Sobes.tech
Junior — Middle

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

sobes.tech AI

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

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

  1. Να δηλώσετε την κλάση ως final — για να αποτρέψετε την κληρονομιά και αλλαγές στη συμπεριφορά.
  2. Να κάνετε όλα τα πεδία private και final — ώστε να μην μπορούν να τροποποιηθούν μετά την αρχικοποίηση.
  3. Να αρχικοποιήσετε όλα τα πεδία μέσω του κατασκευαστή.
  4. Να μην παρέχετε setters (μεθόδους για την τροποποίηση των πεδίων).
  5. Αν τα πεδία είναι αντικείμενα μεταβλητά (π.χ. πίνακες, συλλογές), να επιστρέφετε αντίγραφα σε 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;
    }
}

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