java 编译时注解框架 lombok-ex

Posted houbbblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 编译时注解框架 lombok-ex相关的知识,希望对你有一定的参考价值。

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 引入

<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

以上是关于java 编译时注解框架 lombok-ex的主要内容,如果未能解决你的问题,请参考以下文章

lombok-ex 编译时注解框架,性能完爆 AOP

lombok-ex 编译时注解框架,性能完爆 AOP

lombok-ex 编译时注解框架,性能完爆 AOP

java--自定义注解(注解在编译时生效)

Java编译时注解和运行时注解有啥区别

android编译时注解框架