Java 如何使用APT工具在课程材料中创建练习

Java 如何使用APT工具在课程材料中创建练习,java,annotations,apt,Java,Annotations,Apt,我正在编写如何将插件写入系统集成工具的练习。我们将在练习后演示正确答案,但学生将收到一些方法为空的源代码,并在其中有一条注释,说明他们应该做什么 为了避免重复,如果学生的版本可以从可编译且正确的答案源文件生成,那就太好了。我突然想到,Java注释处理工具(APT,而不是debian APT)可以用来生成练习,如果输入法带有注释,APT可以将方法吐出为空 使用APT可以做到这一点吗?如果是的话,人们会怎么做 有没有更好/更简单的方法来避免重复,从我忽略的单一来源生成练习和正确答案?我不确定APT能

我正在编写如何将插件写入系统集成工具的练习。我们将在练习后演示正确答案,但学生将收到一些方法为空的源代码,并在其中有一条注释,说明他们应该做什么

为了避免重复,如果学生的版本可以从可编译且正确的答案源文件生成,那就太好了。我突然想到,Java注释处理工具(APT,而不是debian APT)可以用来生成练习,如果输入法带有注释,APT可以将方法吐出为空

使用APT可以做到这一点吗?如果是的话,人们会怎么做


有没有更好/更简单的方法来避免重复,从我忽略的单一来源生成练习和正确答案?

我不确定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
   }
}

然后,只需编写一段简单的代码即可删除注释和注释之间的内容。

APT并不是一种理想的方法,尽管它是可以做到的。一般来说,APT只允许您生成新的人工制品,并提供一个。您只能通过访问AST树(也一样)。

是的,魔法评论可能更好。我认为awk可以处理由与regexp匹配的线包围的区域。我得调查一下。