java 编译时注解框架 lombok-ex

lombok-ex

lombok-ex 是一款相似于 lombok 的编译时注解框架。java

编译时注,拥有运行时注解的便利性,和无任何损失的性能。git

主要补充一些 lombok 没有实现,且本身会用到的常见工具。github

创做目的

  • 补充 lombok 缺失的注解,便于平常开发使用。bash

  • lombok 的源码基本不可读,应该是加密处理了。框架

  • 为其余注解相关框架提高性能提供基础,后期考虑替换为编译时注解。maven

特性

  • @Serial 支持

(1)类实现序列化接口ide

(2)类生成 serialVersionUID 字段,字段的值能够经过 value() 属性指定。工具

  • @Util 支持

(1)类设置为 final性能

(2)类构造器私有化this

变动日志

变动日志

快速开始

准备工做

  • jdk1.7+

  • maven 3.x+

  • 编译器启用编译时注解功能。

如 idea 启用 enable annotation process

maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>lombok-ex</artifactId>
    <version>0.0.2</version>
    <scope>provided</scope>
</dependency>
复制代码

例子

  • User.java

咱们定义一个简单的 pojo,使用 @Serial

package com.github.houbb.lombok.test.model;

import com.github.houbb.lombok.ex.annotation.Serial;

@Serial
public class User {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
复制代码

编译

直接使用 maven 命令编译

$   mvn clean install
复制代码

编译结果

查看对应的 User.class 文件,内容以下:

package com.github.houbb.lombok.test.model;

import java.io.Serializable;

public class User implements Serializable {
    private static final Long serialVersionUID = 1L;
    private String name;

    public User() {
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
复制代码

@Util 使用案例

注解使用

@Util
public class StringUtil {

    public static boolean isEmpty(final String string) {
        return null == string || "".equals(string);
    }

}
复制代码

效果

public final class StringUtil {
    private StringUtil() {
    }

    public static boolean isEmpty(String string) {
        return null == string || "".equals(string);
    }
}
复制代码

代码开源地址

全部代码均已开源,见 lombok-ex

相关文章
相关标签/搜索