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