@Delegate类没有默认构造函数

时间:2012-06-03 01:49:23

标签: groovy

如何在Groovy中为没有默认构造函数的类创建委托类?我想装饰JUnit的ResultPrinter但是得到了关于缺少的构造函数的错误。

1 个答案:

答案 0 :(得分:1)

我不明白你的问题。我刚刚尝试使用Java的Short - 它也没有默认的构造函数。

一切都按预期工作,除非你没有初始化委托对象,否则你会得到一个NPE。

你有可能using @Delegate incorrectly吗? Delegate不会装饰现有的类,它允许您在自己的类中使用现有的类方法。它就像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

(或者,提供一些有用的信息,例如实际的错误和堆栈跟踪,以及示例代码,将为您提供更有用的响应。)