在groovy中检查整数是Null还是数字?

在groovy中检查整数是Null还是数字?,groovy,numbers,integer,Groovy,Numbers,Integer,我有一个服务方法,如果方法参数为null/blank或不是数字,则必须抛出一个错误 调用方正在发送一个整数值,但在被调用的方法中如何检查它是数值还是null 例: 如果您有任何建议,我们将不胜感激。您可以尝试使用Groovy的方法 例如: if (value1.isNumber()) ... if (value2.isNumber()) ... 更具体地说,您可以使用以下方法: 但是,如果我们为我们的方法传递一个看起来像整数的字符串,会发生什么呢 assert !isValidInteger(

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

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

例:


如果您有任何建议,我们将不胜感激。

您可以尝试使用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