lombok-ex
lombok-ex 是一款类似于 lombok 的编译时注解框架。
编译时注,拥有运行时注解的便利性,和无任何损失的性能。
主要补充一些 lombok 没有实现,且自己会用到的常见工具。
创作目的
-
补充 lombok 缺失的注解,便于日常开发使用。
-
lombok 的源码基本不可读,应该是加密处理了。
-
为其他注解相关框架提升性能提供基础,后期考虑替换为编译时注解。
特性
@Serial支持
(1)类实现序列化接口
(2)类生成 serialVersionUID 字段,字段的值可以通过 value() 属性指定。
@Util支持
(1)类设置为 final
(2)类构造器私有化
变更日志
变更日志
快速开始
准备工作
-
jdk1.7+
-
maven 3.x+
-
编译器启用编译时注解功能。
如 idea 启用 enable annotation process
maven 引入
1<dependency> 2 <groupId>com.github.houbb</groupId> 3 <artifactId>lombok-ex</artifactId> 4 <version>0.0.2</version> 5 <scope>provided</scope> 6</dependency>
例子
- User.java
我们定义一个简单的 pojo,使用 @Serial
1package com.github.houbb.lombok.test.model; 2 3import com.github.houbb.lombok.ex.annotation.Serial; 4 5@Serial 6public class User { 7 8 private String name; 9 10 public String getName() { 11 return name; 12 } 13 14 public void setName(String name) { 15 this.name = name; 16 } 17 18}
编译
直接使用 maven 命令编译
$ mvn clean install
编译结果
查看对应的 User.class 文件,内容如下:
1package com.github.houbb.lombok.test.model; 2 3import java.io.Serializable; 4 5public class User implements Serializable { 6 private static final Long serialVersionUID = 1L; 7 private String name; 8 9 public User() { 10 } 11 12 public String getName() { 13 return this.name; 14 } 15 16 public void setName(String name) { 17 this.name = name; 18 } 19}
@Util 使用案例
注解使用
1@Util 2public class StringUtil { 3 4 public static boolean isEmpty(final String string) { 5 return null == string || "".equals(string); 6 } 7 8}
效果
1public final class StringUtil { 2 private StringUtil() { 3 } 4 5 public static boolean isEmpty(String string) { 6 return null == string || "".equals(string); 7 } 8}
代码开源地址
所有代码均已开源,见 lombok-ex