groovy
Veilige navigatie-operator
Zoeken…
Basis gebruik
De veilige navigatie-operator van Groovy maakt het mogelijk om NullPointerException
te vermijden bij toegang tot methoden of attributen op variabelen die null
kunnen aannemen. Het is gelijk aan nullable_var == null ? null : nullable_var.myMethod()
def lst = ['foo', 'bar', 'baz']
def f_value = lst.find { it.startsWith('f') } // 'foo' found
f_value?.length() // returns 3
def null_value = lst.find { it.startsWith('z') } // no element found. Null returned
// equivalent to null_value==null ? null : null_value.length()
null_value?.length() // no NullPointerException thrown
// no safe operator used
null_value.length() // NullPointerException thrown
Samenvoeging van veilige navigatie-operators
class User {
String name
int age
}
def users = [
new User(name: "Bob", age: 20),
new User(name: "Tom", age: 50),
new User(name: "Bill", age: 45)
]
def null_value = users.find { it.age > 100 } // no over-100 found. Null
null_value?.name?.length() // no NPE thrown
// null ?. name ?. length()
// (null ?. name) ?. length()
// ( null ) ?. length()
// null
null_value?.name.length() // NPE thrown
// null ?. name . length()
// (null ?. name) . length()
// ( null ) . length() ===> NullPointerException
de veilige navigatie op null_value?.name
geeft een null
terug. Dus length()
moet een controle uitvoeren op de null
om een NullPointerException
te voorkomen.
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow