在groovy中检查整数是Null还是数字?
我有一个服务方法,如果方法参数为null/blank或不是数字,则必须抛出一个错误 调用方正在发送一个整数值,但在被调用的方法中如何检查它是数值还是null 例:在groovy中检查整数是Null还是数字?,groovy,numbers,integer,Groovy,Numbers,Integer,我有一个服务方法,如果方法参数为null/blank或不是数字,则必须抛出一个错误 调用方正在发送一个整数值,但在被调用的方法中如何检查它是数值还是null 例: 如果您有任何建议,我们将不胜感激。您可以尝试使用Groovy的方法 例如: if (value1.isNumber()) ... if (value2.isNumber()) ... 更具体地说,您可以使用以下方法: 但是,如果我们为我们的方法传递一个看起来像整数的字符串,会发生什么呢 assert !isValidInteger(
如果您有任何建议,我们将不胜感激。您可以尝试使用Groovy的方法 例如:
if (value1.isNumber()) ...
if (value2.isNumber()) ...
更具体地说,您可以使用以下方法:
但是,如果我们为我们的方法传递一个看起来像整数的字符串,会发生什么呢
assert !isValidInteger('10') // FAILS
我认为最简单的解决方案是使用instanceof
操作符,所有断言都是有效的:
def isValidInteger(value) {
value instanceof Integer
}
您始终可以定义参数的类型:
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
但是我得到的是int值,我不能用int值;你是说整数吗?如果(!value1 | |!value1.toString().isNumber())。。。否则…
。有关Groovy中true
/false
求值的更多信息,请参阅。谢谢Dan!value1.toString().isNumber()就是这样做的..是的..只是指整数。这是一个很好的例子,但是断言isValidInteger('10')应该是正确的,b'z他们可能会在String对象中发送Integer,在这种情况下,Integer的值instanceof对我不起作用。
def isValidInteger(value) {
value instanceof Integer
}
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