Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用groovy闭包用构造函数参数实例化Java抽象类_Java_Groovy_Abstract Class - Fatal编程技术网

如何使用groovy闭包用构造函数参数实例化Java抽象类

如何使用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{

我试图从Groovy代码中实例化一个Java抽象类。考虑以下Java抽象类(从类中剥离非相关处理):

我可以用这种方式在Groovy中轻松地实例化它,调用
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"}
}