4

私は、システム統合ツールへのプラグインを作成する方法の演習を作成しているところです。演習後のデモンストレーションのために正解を実装しますが、生徒はいくつかのメソッドが空であるソースを受け取り、TODOを含むコメントで何をすべきかを説明します。

重複を避けるために、生徒のバージョンがコンパイル可能で正しい回答のソースファイルから生成されると便利です。Javaアノテーション処理ツール(Debian APTではなくAPT)を使用して演習を生成し、入力メソッドにアノテーションが付いている場合にAPTがメソッドを空として吐き出す可能性があることに気づきました。

これはAPTを使用して行うことができますか?もしそうなら、どのようにそれをしますか?

私が見落としている、重複を避け、単一のソースから演習と正解を生成するためのより良い/より簡単な方法はありますか?

4

2 に答える 2

2

APTは、これを行うための理想的な方法として私を驚かせませんが、それは可能です。一般に、APTは、新しいアーティファクトを生成することのみを目的としており、限られた量の構造情報を提供します。ASTツリーにアクセスするには、コンパイラ固有のハックを使用する必要があります(Project Lombokの場合と同様)。

于 2009-08-27T13:52:35.480 に答える
1

結果を吐き出すにはソースコードにアクセスする必要があるため、APTがこれを実行できるかどうかはわかりません。

アノテーションが前に付いたメソッドを認識し、中括弧を開いたり閉じたりするメソッドの内容を学生用のプレースホルダーに置き換える単純なプログラムを使用したほうがよいでしょう。

別の、おそらくより単純なメカニズムは、カスタムコメントを使用して置換可能な領域をマークし、このファイルを処理して結果を取得することです。例えば

public class SomeClass {
   public SomeClass() {
      // real code here
   }

   public void someMethod() {
      //EXERCISE:START
      System.out("put some real compilable code here, "+
                 "that students will have to implement themselves");
      //EXERCISE:END
   }
}

次に、簡単なコードを実行して、コメントとそれらの間のコンテンツを削除できます。

于 2009-08-27T12:46:20.017 に答える