它看起来像是编译器中未经检查的情况。反编译后,扩展类得到一个空的构造函数。测试应该让您有所了解,因为这种情况在运行时不起作用。
我不知道如何使用这个类;我尝试了我知道的方法:
abstract class AbstractClass {
String string
Integer integer
AbstractClass(String string, Integer integer) {
this.string = string
this.integer = integer
}
}
class ImplClass extends AbstractClass { }
// every constructor fails
abs1 = new ImplClass('a', 1)
abs2 = [string: 'b', integer: 2] as ImplClass
abs3 = new ImplClass(abs: 'c', a: 3)
abs4 = ImplClass [string:'d', integer:4]
他们都没有在运行时工作,但编译得很好;-)。这种情况更多的是关于编译错误与运行时错误。也许填写JIRA?
另一方面,如果您需要继承构造函数,则可以@groovy.transfom.InheritConstructors
在扩展类中进行。这样,您将拥有构造函数,而无需super()
显式调用。