0
如何在Groovy中爲沒有默認構造函數的類創建委託類?我想裝飾JUnit的ResultPrinter,但得到關於缺少構造函數的錯誤。@Delegate類沒有默認構造函數
如何在Groovy中爲沒有默認構造函數的類創建委託類?我想裝飾JUnit的ResultPrinter,但得到關於缺少構造函數的錯誤。@Delegate類沒有默認構造函數
我不明白你的問題。我只是用Java的Short
來試一試 - 它也沒有默認的構造函數。
一切按預期工作,除非你沒有初始化委託對象,你會得到一個NPE。
是否有可能您是using @Delegate
incorrectly?委託不會修飾現有的類,它允許您在自己的類中使用現有的類方法。這就像extend
,但沒有類繼承。
示例代碼:
class Foo {
@Delegate Short num
String bar
String toString() { "$bar: $num" }
}
def f = new Foo(bar: 'bob', num: 34 as Short)
println f // OK
println f.doubleValue() // OK
f = new Foo()
println f.doubleValue() // NPE
(可替換地,提供了一些有用的信息,例如實際的錯誤和堆棧跟蹤,和示例代碼,將獲得您更多有用的響應)