【问题标题】:Safe Navigation Operator, its working?安全导航操作员,它的工作原理?
【发布时间】:2018-09-14 03:06:27
【问题描述】:
def Abc(){
    return this.abc?.equals(bcd.toString()) 
}

另外,尝试将其转换为 Java。

abc 是一个字符串。 我明白'?运算符会做一个空检查,'abc' 它不是空的,它会继续执行等号部分并根据它返回真或假,但是如果它发现一个空怎么办?

【问题讨论】:

标签: grails groovy


【解决方案1】:

将其视为以下内容的简写:

return this.abc == null ? null : this.abc.equals(bdc.toString())

根据 Groovy 语言文档

安全导航运算符用于避免NullPointerException。通常,当您引用一个对象时,您可能需要在访问该对象的方法或属性之前验证它不是null。为避免这种情况,安全导航运算符将简单地返回 null 而不是抛出异常

所以它将返回null 而不是false

【讨论】:

  • 看完后,我猜想这是java中的解释:( this.abc != null && this.abc.equals(bcd.toString()) )
  • 嗯,你说得对!!但是如果我把这段代码改成java,我希望方法的返回类型是布尔值,在这种情况下,我将不能返回一个空值,我也不希望它抛出一个空指针。因此,对这里有帮助的 java 解释将是我发布的!
  • 是的,如果你想返回一个布尔值,那么你应该使用你建议的代码。但是,您最初的问题是,如果安全导航运算符返回 null,Groovy 会返回什么
猜你喜欢
  • 2014-10-11
  • 2013-12-30
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 2018-09-15
  • 1970-01-01
相关资源
最近更新 更多