在基础Groovy中进行转换的更加优雅的方法

5
我经常需要在params对象中将值转换为字符串以执行‘.equals’操作,但这种方式总是感觉不太对。如果我使用‘parseXXX’方法,当值为空时还需要保护自己。在像Groovy这样的动态语言中应该有更好的处理方式。是否有人找到了一种不同的方式,更像Groovy而不是Java?我可以构建一个实用类来清理这个问题,但我正在寻找一些内置的功能,请不要建议额外的库。
示例:
def intValue = (params.intValue)? Integer.parseInt(params.intValue) :null

Things.each{ thing -> 
    if (thing.intValue.equals(intValue)){
        //do stuff
    }
}
2个回答

6
使用类型转换方法怎么样呢?这可能会让内容更易于理解。
def intValue = params.int('myparam')

...还有针对booleanlongcharshort等类型的方法。这些方法都是空安全的,并且可以避免任何解析错误,因此您不必对参数执行任何其他检查。


太棒了!我知道一定有更优雅的方法。 - Michael J. Lee

1

我认为最“Groovy”的方式如下:

params.intValue as Integer == thing.intValue

@Michael 这个代码在 params.intValue 格式错误时会抛出 NumberFormatException,就像你原来的代码一样,但这可能不是你真正想要的 -- 另一个答案没有这个问题 :)。 - Artur Nowak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接