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

従来のJavaスタイルでインスタンス化できます。

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

念のため、言い回しを明確にするために、これらすべてのシナリオで、抽象クラスをインスタンス化するわけではありません。

抽象クラスは、インスタンス化できないクラスです。

抽象クラスを拡張する具体的な匿名クラスをインスタンス化しています。B-)

于 2013-03-18T03:09:36.223 に答える