Τι συμβαίνει αν προσπελάσετε ένα nullable πεδίο ενός αντικειμένου σε Kotlin;
sobes.tech AI
Απάντηση από AI
Αν προσπελάσετε ένα nullable πεδίο ενός αντικειμένου χωρίς έλεγχο για null, θα προκληθεί εξαίρεση NullPointerException (NPE).
Για ασφαλή πρόσβαση, μπορείτε να χρησιμοποιήσετε τις ακόλουθες προσεγγίσεις:
-
Τελεστής ασφαλούς κλήσης (
?.): Επιστρέφειnullαν το αντικείμενο είναιnull, διαφορετικά εκτελεί την κλήση.// Υποθέτουμε ότι το user? είναι ένας User? val userName: String? = user?.name -
Τελεστής μη-null επιβεβαίωσης (
!!): Επιβεβαιώνει ρητά ότι το αντικείμενο δεν είναιnull. Αν είναι, ρίχνειNullPointerException.// Χρησιμοποιήστε συνειδητά, μπορεί να οδηγήσει σε NPE val userName: String = user!!.name -
Τελεστής Elvis (
?:): Παρέχει μια προεπιλεγμένη τιμή αν το αριστερό αντικείμενο είναιnull.val userName: String = user?.name ?: "Άγνωστος Χρήστης" -
Μπλοκ
ifήwhen: Ρητός έλεγχος γιαnull.if (user != null) { val userName = user.name } else { // Διαχείριση περίπτωσης όπου το user είναι null } -
Λειτουργίες
let,run,apply,withμε ασφαλή κλήση:user?.let { // `it` μέσα σε αυτό το μπλοκ είναι ένας μη-null `User` val userName = it.name }
Η επιλογή της προσέγγισης εξαρτάται από τη λογική του προγράμματος και τη συμπεριφορά που επιθυμείτε στην περίπτωση που το αντικείμενο είναι null. Συνήθως, συνιστάται η χρήση του ασφαλούς τελεστή κλήσης (?.) ή του τελεστή Elvis (?:) για την αποφυγή NPE. Ο τελεστής !! πρέπει να χρησιμοποιείται με προσοχή.