在Groovy中检查Integer是否为Null或数字?

时间:2012-05-07 17:18:00

标签: groovy numbers integer

我有一个服务方法,如果方法参数为null / blank或不是数字,则必须抛出错误。

调用者正在发送一个Integer值,但在调用方法中如何检查它是数字还是null。

例如:

def add(value1,value2){
 //have to check value1 is null/blank
 //check value1 is numeric

}

caller: class.add(10,20)

任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:7)

更具体的是answer of Dan Cruz,您可以使用String.isInteger()方法:

def isValidInteger(value) {
    value.toString().isInteger()
}

assert !isValidInteger(null)
assert !isValidInteger('')
assert !isValidInteger(1.7)
assert isValidInteger(10)

但如果我们为方法传递String Integer会发生什么情况:

assert !isValidInteger('10')  // FAILS

我认为最简单的解决方案是使用instanceof运算符,所有断言都是有效的:

def isValidInteger(value) {
    value instanceof Integer
}

答案 1 :(得分:3)

您可以随时定义参数类型:

Number add( Number value1, Number value2 ) {
  value1?.plus( value2 ?: 0 ) ?: value2 ?: 0
}

int a = 3
Integer b = 4
assert add(    a, null ) == 3
assert add( null,    3 ) == 3
assert add( null, null ) == 0
assert add(    a,    b ) == 7
assert add(    a,    4 ) == 7
assert add(    0,    a ) == 3
assert add(    1,    1 ) == 2
assert add(    0,    0 ) == 0
assert add(   -1,    2 ) == 1

答案 2 :(得分:2)

您可以尝试使用Groovy的String.isNumber()方法。

例如:

if (value1.isNumber()) ...
if (value2.isNumber()) ...