6

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

public abstract class StackOverflow{
  public abstract String answerMe();
}

我可以通过这种方式在 Groovy 中轻松实例化它,并且调用answerMe()将触发正确的输出:

StackOverflow stack = [answerMe : { "Answer" }] as StackOverflow

现在,如果我修改StackOverflow类,在构造函数中添加一个 String 参数,如下所示:

public abstract class StackOverflowStr{
  public StackOverflowStr(String s){}
  public abstract String answerMe();
}

我真的不知道如何实例化我的对象,我尝试了很多东西,但我似乎找不到正确的语法,有人知道吗?

4

2 回答 2

3

仅作记录,并明确措辞:在所有这些场景中,您都没有实例化抽象类。

抽象类是永远无法实例化的类。

您正在实例化一个扩展抽象类的具体匿名类。B-)

于 2013-03-18T03:09:36.223 回答
3

你可以用经典的 Java 风格实例化它:

StackOverflowStr stack = new StackOverflowStr("javaish"){
    String answerMe() {"answer"}
}
于 2012-04-29T09:12:22.007 回答