私はこのようなグルーヴィーな方法を持っています
def createMyObj(id,instanceId,isValid) {
def myObj = new SomeObj()
myObj.setId(id)
myObj.setInstanceId(instanceId)
myObj.isValid(isValid)
myObj
}
テストでこれを明示的に行うと、これを回避するテストがあり、完全に正常に動作します。
def testObj = createMyObj(10,20,true)
このような名前付き引数を使用しようとしたとき。
def testObj = createMyObj(id:10,instanceId:20,isValid:true)
それは私にこの例外を与えています
No signature of method:createMyObj is applicable for argument types: (java.util.LinkedHashMap) values [[id:10, instanceId:20,..]]
概念をもう少し理解するためにこのページにアクセスしたところ、このスニペットが表示されました。
すべての名前付き引数の場合はdef foo(T t, p1, p2, ..., pn)
t になりますが、これは名前で pi にアクセスするメソッド呼び出しを行うことができないことも意味します。例
def foo(x,y){}
foo(x:1,y:2)
メソッド foo は 2 つの引数を想定していますが、指定したマップは 1 つの引数しかないため、このコードは実行時に失敗します。
それが私が直面しているエラーの原因であるかどうかはわかりません。不足している引数は何か、または2番目の引数を渡すにはどうすればよいかというような2つの引数が必要な場合は?