Groovy 访问类变量Grails——这两者之间的区别

Groovy 访问类变量Grails——这两者之间的区别,groovy,Groovy,又来了。我对两件结果相同的简单事情感到困惑。我正在学习Grails,我经历了这种情况 ${ClassName.name}和${ClassName?.name}两个结果相同。在这种情况下使用“?”有什么区别 请解释使用问号的区别。 安全导航操作员(?) 安全导航操作符用于避免NullPointerException。通常,当您拥有对对象的引用时,您可能需要在访问对象的方法或属性之前验证该对象是否为null。为了避免这种情况,安全导航操作符将简单地返回null,而不是抛出异常,如下所示: def u

又来了。我对两件结果相同的简单事情感到困惑。我正在学习Grails,我经历了这种情况

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

请解释使用问号的区别。

安全导航操作员(?) 安全导航操作符用于避免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
可能重复的