Sobes.tech
Junior — Middle

Μπορείτε να τροποποιήσετε δεδομένα που έχουν δηλωθεί ως αμετάβλητα;

sobes.tech AI

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

Τα δεδομένα που δηλώνονται ως αμετάβλητα (π.χ., με τη χρήση της λέξης-κλειδιού final στη Java) δεν μπορούν να τροποποιηθούν μετά την αρχικοποίηση της αναφοράς ή της τιμής. Ωστόσο:

  • Αν το final εφαρμόζεται σε έναν πρωταρχικό τύπο, η τιμή δεν μπορεί να αλλάξει.
  • Αν το final εφαρμόζεται σε ένα αντικείμενο, η αναφορά στο αντικείμενο δεν μπορεί να αλλάξει, αλλά η εσωτερική κατάσταση του αντικειμένου μπορεί να τροποποιηθεί αν η κλάση δεν είναι πλήρως αμετάβλητη.

Παράδειγμα:

final List<String> list = new ArrayList<>();
list.add("item"); // επιτρέπεται, το περιεχόμενο του αντικειμένου αλλάζει
// list = new ArrayList<>(); // σφάλμα, δεν μπορεί να αλλάξει η αναφορά

Για την πλήρη προστασία των δεδομένων από αλλαγές, πρέπει να χρησιμοποιούνται αμετάβλητες κλάσεις ή συλλογές, π.χ., Collections.unmodifiableList.