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;
}
}
Αυτού του είδους η κλάση, μετά τη δημιουργία του αντικειμένου, δεν επιτρέπει την αλλαγή της κατάστασής του.