我试图从我的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();
}
我真的不知道如何实例化我的对象,我尝试了很多东西,但我似乎无法找到正确的语法,有人有任何线索吗?
答案 0 :(得分:3)
仅仅是为了记录,并且要明确措辞:在所有这些场景中,你没有实例化一个抽象类。
抽象类是永远无法实例化的类。
您正在实例化一个扩展抽象类的具体匿名类。乙 - )
答案 1 :(得分:2)
您可以使用经典Java样式实例化它:
StackOverflowStr stack = new StackOverflowStr("javaish"){
String answerMe() {"answer"}
}