7

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

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

前任:

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

}

caller: class.add(10,20)

任何建议将不胜感激。

4

3 回答 3

8

更具体的是 Dan Cruz 的答案,你可以使用String.isInteger()方法:

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

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

但是,如果我们为我们的方法传递String看起来像 a的 a 会发生什么Integer

assert !isValidInteger('10')  // FAILS

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

def isValidInteger(value) {
    value instanceof Integer
}
于 2012-05-07T20:24:41.767 回答
4

您始终可以定义参数的类型:

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
于 2012-05-08T08:06:57.267 回答
2

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

例如:

if (value1.isNumber()) ...
if (value2.isNumber()) ...
于 2012-05-07T17:21:23.573 回答