我看到很多对javax.lang.model的引用都是解析java文件的api,似乎它足以满足我的想要做的事情。但是,从打开.java文件开始,我找不到任何使用它的示例。我发现的唯一模糊的参考是关于编写一个编译器插件并使用javac调用你的代码。
这是使用这个API的唯一方法吗?是不是可以简单地打开一个文件并从javax.lang.model.element获取类的实例与您自己的main()?有人能够指出我这种性质的工作实例吗?
答案 0 :(得分:4)
javax.lang.model,javax.lang.model.element,javax.lang.model.element.type和javax.model.element.util包旨在用于注释处理器(javax.annotation.processing) .Processor),这是你提到的编译器插件。您可以使用编译器API在运行时编译和分析类。您可以使用返回javax.tools.JavaCompiler类的javax.tools.ToolProvider.getSystemJavaCompiler()。它有一个接口来编译.java文件并对它们运行注释处理器。有关详细信息,请查看JavaCompiler#getTask