又是在这里。我对两个结果相同的简单事情感到困惑。我正在学习 Grails,我经历了这种情况。
${ClassName.name}
并且${ClassName?.name}
两个结果相同。使用“?”有什么区别?在这种情况下?
请解释使用问号的区别。
又是在这里。我对两个结果相同的简单事情感到困惑。我正在学习 Grails,我经历了这种情况。
${ClassName.name}
并且${ClassName?.name}
两个结果相同。使用“?”有什么区别?在这种情况下?
请解释使用问号的区别。
http://groovy.codehaus.org/Operators#Operators-SafeNavigationOperator
安全导航运算符 (?.) 安全导航运算符用于避免 NullPointerException。通常,当您有一个对象的引用时,您可能需要在访问该对象的方法或属性之前验证它不为空。为避免这种情况,安全导航运算符将简单地返回 null 而不是抛出异常,如下所示:
def user = User.find( "admin" ) //this might be null if 'admin' does not exist
def streetName = user?.address?.street //streetName will be null if user or user.address is null - no NPE thrown