我有一个服务方法,如果方法参数为null / blank或不是数字,则必须抛出错误。
调用者正在发送一个Integer值,但在调用方法中如何检查它是数字还是null。
例如:
def add(value1,value2){
//have to check value1 is null/blank
//check value1 is numeric
}
caller: class.add(10,20)
任何建议都将受到赞赏。
答案 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)