注解apt工具示例程序
? 今天按照《Thinking in Java》中使用apt处理注解一节,将书中代码写了一遍,但运行过程中出现了一个问题让我很纳闷,下面先把代码呈上,问题稍后再说。
? 程序功能很简单,就是从被注解的类中提取出public方法,然后使用注解处理器生成一个包含这些public方法的接口文件。
具体介绍可以参考原书。
?
ExtractInterface.java——注解定义
?
InterfaceExtractorProcessor.java——注解处理器类
?
InterfaceExtractorProcessorFactory.java——处理器工厂类
for (MethodDeclaration m : typeDel.getMethods()) {if (m.getModifiers().contains(Modifier.PUBLIC)&& !(m.getModifiers().contains(Modifier.STATIC))) {interfaceMethods.add(m);}}?如果使用书中的代码是无法得到预期结果的,我使用JDK1.6,不知道JDK1.5是否可以。在JDK1.6中,getModifiers()返回Collection<Modifier>类型,而Modifier类中的静态常量(PUBLIC、STATIC等)是int类型,因此书中代码总会返回false。
上面是我的一个方法,应该有更好的方法,希望大家可以分享。
?
?