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

相關文章
相關標籤/搜索