我创建了一个类:NumberHelper
它有方法:roll(num)
我希望别名,例如rollOnce
,所以我写道:
static def rollOnce = NumberHelper.&roll
当我拨打rollOnce
时,程序会抛出异常。
如何在groovy中做到这一点?
更多细节:
首先,我们在Java中为我们自己的业务实现Number类
def userBuildScript = findScript(name) as Closure
use (NumberHelper, StringHelper, UserHelper){
// first make the user object
// then
userBuildScript.call(preBuildUser, businessNumberObject)
}
我们为Number类编写了一个类别类,它是上面的NumberHelper。
并在构建脚本中:
user(someRole) { user, number ->
it.someProperty = number.roll() // here, an exception throw
}
groovy.lang.MissingMethodException: No signature of method: xxx.xx.x.user.biz.Number,roll() is applicable for argument types
这些信息足以帮助我找到原因吗?
感谢您的回答,谢谢:)
答案 0 :(得分:0)
只要原始滚动方法也是静态的,您所拥有的就应该有效。这对于我来说在常规的1.8.6中工作正常:
class NumberHelper {
static def roll(num) {
return new Random().nextInt(num) + 1
}
static def rollOnce = NumberHelper.&roll
}
def roll = NumberHelper.roll(6)
assert roll <= 6 && roll >= 1
rollOnce = NumberHelper.rollOnce(10)
assert rollOnce <= 10 && rollOnce >= 1