访问类变量Grails - 这两者之间的差异

时间:2013-08-14 05:16:17

标签: groovy

再来一次。我很困惑两个简单的结果相同。我正在学习Grails,我遇到了这种情况。

${ClassName.name}${ClassName?.name}两者结果相同。使用'?'有什么区别?在这种情况下?

请解释使用问号的区别。

1 个答案:

答案 0 :(得分:1)

http://groovy.codehaus.org/Operators#Operators-SafeNavigationOperator

安全导航操作员(?。) 安全导航操作符用于避免NullPointerException。通常,在引用对象时,可能需要在访问对象的方法或属性之前验证它是否为null。为了避免这种情况,安全导航操作符将只返回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