zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    webpack2 前篇
    vue 的调试工具
    CSS 命名规范总结
    reset.css
    推荐几个精致的web UI框架
    自己是个菜鸟 自己查找的简单的适合初学的Makefile
    Linux下编译、使用静态库和动态库 自己测过的
    函数参数的传递 动态内存传递问题(指针的指针)
    二级指针 (C语言)
    find_if查找vector内对象的成员 作为菜鸟一直不会用也不敢用
  • 原文地址:https://www.cnblogs.com/houbbBlogs/p/11619640.html
Copyright © 2011-2022 走看看