生活感悟-亚搏直播大秀-亚搏直播官方网站-亚搏直播官网

欢迎重视,带你学习更日子感悟-亚搏直播大秀-亚搏直播官方网站-亚搏直播官网多java后端技能

作 者:LiWenD

来 源:http://t.cn/EXhxRzV

曾经的Java项目中,充满着太多不友好的代码:POJO的getter/setter/toString;反常处理;I/O流的封闭操作等等,这些样板代码既没有技能含量,又影响着代码的漂亮,Lombok应运而生。

任何技能的呈现都是为了处理某一类问题,假如在此基础上再树立奇技淫巧,不如回归Java自身,应该坚持合理运用而不乱用。

Lombok的运用十分简略:

1)引进相应的maven包




org.projectlombok



lombok



1.16.18



provided


Lombok的scope=provided,阐明它只在编译阶段收效,不需求打入包中。现实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完好的Class文件。

2)添加IDE东西对Lombok的支撑

IDEA中引进Lombok支撑如下:

点击File-标签5- Settings设置界面,装置Lombok插件:

点击File-- Settings设置界面,敞开 AnnocationProcessors:

敞开该项是为了日子感悟-亚搏直播大秀-亚搏直播官方网站-亚搏直播官网让Lombok注解在编译阶段起到效果。

Eclipse的Lombok插件装置能够自行百度,也比较简略,值得一提的是,因为Eclipse内置的编译器不是Oracle javac,而是eclipse自己完成的Eclipse Compiler for Java (ECJ).要让ECJ支撑Lombok,需求在eclipse.ini配置文件中添加如下两项内容:

-
Xbootclasspath
/a:[lombok.jar地点途径]

3)Lombok完成原理

自从Java 6起,javac就支撑“JSR 269 Pluggable Annotation Processing API”标准,只需程序完成了该API,就能在javac运转的时分得到调用。

Lombok就日子感悟-亚搏直播大秀-亚搏直播官方网站-亚搏直播官网是一个完成了"JSR 269 API"的程序。在运用javac的过程中,它发生效果的详细流程如下:

  1. javac对源代码进行剖析,生成一棵笼统语法树(AST)
  2. javac编译过程中调用完成了JSR 269的Lombok程序
  3. 此刻Lombok就对榜首过程得到的AST进行处理,找到Lombok注解地点类对应的语法树(AST),然后修正该语法树(AST),添加Lombok注解界说的相应树节点
  4. javac运用修正后的笼统语法树(AST)生成字节码文件

4标签10) Lombok注解的运用

POJO类常用注解:

@Getter/@Setter: 效果类上,生成一切成员变量的getter/s日子感悟-亚搏直播大秀-亚搏直播官方网站-亚搏直播官网etter办法;效果于成员变量上,生成该成员变量的getter/setter办法。能够设定拜访权限及是否懒加载等。

在Structure视图中,能够看到现已生成了ge标签19tter/setter等办法:

编译后的代码如下:[这也是传统Java编程需求编写的样板代码]

@ToString:效果于类,掩盖默许的toString()办法,能够经过标签3of特点限制显现某些字段,经过exclude特点扫除标签1某些字段。

@EqualsAndHashCode:效果于类,掩盖默许的equals和hashCode

@NonNull:首要效果于成员变量和参数中,标识不能为空,不然抛出空指针反常。

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsCo标签5nstructor:效果于类上,用于生成结构函数。有标签19staticName、access等特点。

staticName特点一旦设定,将选用静态办法的办法生成实标签5例,access特点能够限制拜访权限。

@日子感悟-亚搏直播大秀-亚搏直播官方网站-亚搏直播官网NoArgsConstructor:生成无参结构器;

@RequiredArgsCon日子感悟-亚搏直播大秀-亚搏直播官方网站-亚搏直播官网structor:生成包括final和@NonNull注解的成员变量的结构器;

@AllArgsConstructor:生满足参结构器。

编译后成果:

@Data:效果于类上,是以下注解的调集:@ToString @EqualsAnd日子感悟-亚搏直播大秀-亚搏直播官方网站-亚搏直播官网HashCode @Getter @Setter @Requi标签14redArgsConstructor

@Builder:效果于类上,将类转变为制作者形式

@Log:效果于类上,生成日志变量。针对不同的日志完成产品,有标签14不同的注解:

其他重要注解:

@Cleanup:主动封闭资源,针对完成了java.io.Closeable接口的目标有用,如:典型的IO流目标

编译后成果如下:

是不是简练了太多。

@SneakyThrows:能够对受检反常进行捕捉并抛出,能够改写上述的main办法如下:

@Synchronized:效果于办法等级,能够替换synchr标签5onize关键字或lock锁,用途不大。

发表评论

电子邮件地址不会被公开。 必填项已用 *标注