7

サービスメソッドがあり、メソッドパラメータがnull /空白または数値でない場合、エラーをスローする必要があります。

呼び出し元は整数値を送信していますが、呼び出されたメソッドで、それが数値かnullかを確認する方法。

元:

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

}

caller: class.add(10,20)

周りの提案をいただければ幸いです。

4

3 に答える 3

8

ダンクルスの答えより具体的には、あなたは方法を使うことができます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。すべてのassertは有効です。

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 に答える