Junior — Middle
Μπορείτε να τροποποιήσετε δεδομένα που έχουν δηλωθεί ως αμετάβλητα;
sobes.tech AI
Απάντηση από AI
Τα δεδομένα που δηλώνονται ως αμετάβλητα (π.χ., με τη χρήση της λέξης-κλειδιού final στη Java) δεν μπορούν να τροποποιηθούν μετά την αρχικοποίηση της αναφοράς ή της τιμής. Ωστόσο:
- Αν το
finalεφαρμόζεται σε έναν πρωταρχικό τύπο, η τιμή δεν μπορεί να αλλάξει. - Αν το
finalεφαρμόζεται σε ένα αντικείμενο, η αναφορά στο αντικείμενο δεν μπορεί να αλλάξει, αλλά η εσωτερική κατάσταση του αντικειμένου μπορεί να τροποποιηθεί αν η κλάση δεν είναι πλήρως αμετάβλητη.
Παράδειγμα:
final List<String> list = new ArrayList<>();
list.add("item"); // επιτρέπεται, το περιεχόμενο του αντικειμένου αλλάζει
// list = new ArrayList<>(); // σφάλμα, δεν μπορεί να αλλάξει η αναφορά
Για την πλήρη προστασία των δεδομένων από αλλαγές, πρέπει να χρησιμοποιούνται αμετάβλητες κλάσεις ή συλλογές, π.χ., Collections.unmodifiableList.