k8凯发(中国)天生赢家·一触即发

 
主页 > 新闻中心 > 行业资讯

凯发K8一触即发插入式java插入式注解插入式注解处理器

来源:网络 |最近更新: 2024-03-04

  下面我们通过一个实例来讲解下。我们大家都知道java中有个类库叫做lombok,他的作用就是帮助我们减少一些模板代码,例如属性中的set、 get方法的生成等,他通过在加注解的方式,在编译期,动态的为属性添加了set、k8凯发get方法,利用的就是上述所讲的功能做的。今天我们也实现以 下这个功能。

  process方法里面所做的事情就是根据属性名称动态的创建set方法makesettermethoddecl和get方法makegettermethoddecl然后将创建的方法添加到这个类中的方法中jcclassdecldefs随后进行编译至于动态创建方法的逻辑中的没一步基本上都有注释相信大家都能看懂就不详细介绍了

  将创建的方法添加到这个类中的方法中(jcClassDecl.defs)随后进行编译,至于动态创建方法的逻辑中的没一步基本上都有注释,相信大家都能看

  在JAVA 1.6后,k8凯发JDK提供了一ห้องสมุดไป่ตู้方式,可以让我们修改编译过程,在编译期融入我们自己编译逻辑。它提供了一组编译 器的插入式注解处理器的标准API再编译期间对注解进行处理,我们可以利用这些API,读取、修改、添加抽象语法树中 的任意元素。如果因为这些注解对语法树进行了修改,编译器会重新进行词法、语法的分析处理,直到所有的插入式注解 没有对语法树进行修改为止。

  面初始化javac运行期间的一些对象。例如JavacTrees是带处理的抽象语法树对象,TreeMaker中提供了一些操作抽象语法树节点的方

  法凯发K8一触即发,Names提供了创建标识符的方法。process方法是真正处理抽象语法树的方法,这个方法的返回值是布尔类型。如果返回true,说明修改了语

  法树凯发K8一触即发,那么就需要重新进行解析和填充符号步骤。如果返回false,说明没有进行过修改,例如只是检查等操作,这样就不需要重新解析了。

  既然是 插入式注解 那么注解肯定是必不可少的。我们定义一个 Data 类型的注解,希望可以在编译期,给打上这个注解的类,生产set、get方法。

  懂,就不详细介绍了。这样,就在编译期间生成了属性对应的方法,这也就是lombok的原理所在。