我知道有類似的問題,但答案並不令人滿意。如何處理groovy模糊方法超負荷優雅
在調用null作爲參數的方法時,出現Groovy模糊方法重載錯誤。
例如爲:
class A{
sampleMethod (B bObj){
if(bObj == null) {
handleNullArgumentGracefully()
}
... do some cool stuff ...
}
sampleMethod (C cObj){
... do some other cool stuff ...
}
}
現在,當我打電話sampleMethod(null)
常規不知道它應該調用哪個方法。這清楚但是否有可能將這兩個方法設置爲默認方法來處理這樣的空調用?我想處理這對被叫側和不在主叫側(我不想投在發送方的東西)
UPDATE: 我找到了解決辦法,怎麼會工作,但我不知道爲什麼:轉換非默認方法的封閉性
class app {
static void main(String[] args) {
def a = new A()
a.sampleMethod(new B())
a.sampleMethod(new C())
a.sampleMethod(null)
}
}
class A {
def sampleMethod(B bObj) {
if (bObj == null) {
println("handle null")
}
println("1")
}
def sampleMethod = { C cObj ->
println("2")
}
}
class B {
}
class C {
}
您可以修改一個方法,像「sampleMethod(B BOBJ = NULL )'。所以這種方法將被稱爲即使如果bObj爲空 –
謝謝,我會嘗試:) – warch
不幸的是,這不起作用 – warch