2
我想通過攔截對某些方法的調用來重現默認參數的行爲。下面的代碼試圖給當方法顯示被稱爲不帶參數的默認參數:在調用之前更改和添加方法參數
class Thing
{
void display(String text)
{
println(text)
}
def invokeMethod(String name, args)
{
if(name == "display" && args.length == 0)
{
metaClass.getMetaMethod(name, ["some text"]).
invoke(this, "some text")
}
else
{
metaClass.getMetaMethod(name, args).
invoke(this, args)
}
}
}
Thing thing = new Thing()
thing.display("stuff") //prints "stuff"
thing.display() //nothing happens
然而,這不起作用;沒有參數時沒有打印。
這個例子不是很有用,但我想讓它工作;我的下一個目標確實是創造可以以他們的名義給出論點的方法。例如:
Add1And2()// should return 3
Add4And9()// should return 13
攔截調用這些不存在的方法,並調用現有的方法,將使用的方法不存在名稱中使用的數字將有可能做加法...