Junior — Middle
Πώς υλοποιείτε μια κλάση στη Java έτσι ώστε η κατάσταση της να είναι αμετάβλητη μετά τη δημιουργία;
sobes.tech AI
Απάντηση από AI
Για να κάνετε μια κλάση σε Java αμετάβλητη (immutable), πρέπει:
- Να δηλώσετε την κλάση ως
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;
}
}
Ένα τέτοιο κλάσμα, μετά τη δημιουργία του αντικειμένου, δεν επιτρέπει την αλλαγή της κατάστασής του.