Sobes.tech
Junior

Τι συμβαίνει αν προσεγγίσετε ένα πεδίο ενός αντικειμένου που μπορεί να είναι null;

sobes.tech AI

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

NullPointerException (NPE). Συμβαίνει όταν προσπαθείτε να καλέσετε μια μέθοδο ή να προσπελάσετε ένα πεδίο ενός αντικειμένου, η αναφορά του οποίου είναι null.

Παράδειγμα:

data class User(val name: String)

fun printUserName(user: User?) {
    // Αν το user == null, θα προκληθεί NullPointerException
    println(user.name)
}

Για να αποφύγετε το NPE, μπορείτε να χρησιμοποιήσετε:

  • Ελέγχους για null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Ο χρήστης είναι null")
        }
    }
    
  • Τελεστής ασφαλούς κλήσης (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Θα εμφανίσει null αν το user == null, διαφορετικά το όνομα
    }
    
  • Τελεστής Elvis (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Προεπιλεγμένο όνομα" // Αν το user?.name == null, θα οριστεί "Προεπιλεγμένο όνομα"
        println(userName)
    }
    
  • Μη-null τύποι (στην Kotlin):
    // Αυτή η μέθοδος δέχεται μόνο μη-null αντικείμενο User
    fun printUserName(user: User) {
        println(user.name) // Εγγυημένα όχι null
    }