如何使用groovy闭包用构造函数参数实例化Java抽象类
我试图从Groovy代码中实例化一个Java抽象类。考虑以下Java抽象类(从类中剥离非相关处理): 我可以用这种方式在Groovy中轻松地实例化它,调用如何使用groovy闭包用构造函数参数实例化Java抽象类,java,groovy,abstract-class,Java,Groovy,Abstract Class,我试图从Groovy代码中实例化一个Java抽象类。考虑以下Java抽象类(从类中剥离非相关处理): 我可以用这种方式在Groovy中轻松地实例化它,调用answerMe()将触发正确的输出: StackOverflow stack = [answerMe : { "Answer" }] as StackOverflow 现在,如果我修改StackOverflow类,在构造函数中添加一个字符串参数,如下所示: public abstract class StackOverflowStr{
answerMe()
将触发正确的输出:
StackOverflow stack = [answerMe : { "Answer" }] as StackOverflow
现在,如果我修改StackOverflow
类,在构造函数中添加一个字符串参数,如下所示:
public abstract class StackOverflowStr{
public StackOverflowStr(String s){}
public abstract String answerMe();
}
我真的不知道如何实例化我的对象,我尝试了很多东西,但我似乎找不到正确的语法,有人有什么线索吗?你可以用经典Java风格实例化它:
StackOverflowStr stack = new StackOverflowStr("javaish"){
String answerMe() {"answer"}
}
为了记录在案,并且要明确措辞:在所有这些场景中,您都没有实例化抽象类 抽象类是永远无法实例化的类
您正在实例化一个扩展抽象类的具体匿名类。B-谢谢,我是这样做的,但我想知道是否可以像第一个示例中那样使用闭包。@CedricGatay否,如果没有默认构造函数,如果不按照Andrea说的做,就不能创建代理对象
StackOverflowStr stack = new StackOverflowStr("javaish"){
String answerMe() {"answer"}
}