zoukankan      html  css  js  c++  java
  • idea使用lombok(待用时候研究补充)

    好处:简化代码,增强代码可读性,提高开发效率。注解类型为Source,源码中显示,编译之前丢失,转化为具体代码。其实他的魅力并不在于帮助我们简单的编写对应的getter或者更多的方法,还有一点在于,当我们的字段发生改变时,lombok也会对相应的getter方法进行改变。

    1.安装插件LomBok Plugin

    2.配置idea编译器,支持注解编译

    3.引入Lombok依赖 

    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.18</version>
    <scope>provided</scope>
    </dependency>
    scope=provided,说明它在编译阶段生效,不需要打入包中。Lombok在编译期将java文件正确的编译为完成的Class文件。 

    4.使用

    ALT+7打开类的结构图我们可以看到ComBok的@Data帮我们自动生成了常用代码

    5.注解和代码进行转换查看

    具体的在对应java文件上右键--Refactor  中我们可以看到lombok和delombok

    6.Lombok注解详解

     @Data

    注解源码如下:

    package lombok;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.SOURCE)
    public @interface Data {
        String staticConstructor() default "";
    }
    View Code

    我们看源码及其注释发现

    1.用处:TYPE(类,接口(包括注解类型),枚举)

    2.注解类型 SOURCE(源码中显示,编译之前丢失并且转化为具体代码)

    3.属性staticConstructor ,默认为空串,没有静态工厂方法,构造共有。而注解中介意我们staticConstructor赋值“of”:作用是私有构造,用静态工厂方法of()创建实例。

    @Getter

    注解源码如下:

    package lombok;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    @Target({ElementType.FIELD, ElementType.TYPE})
    @Retention(RetentionPolicy.SOURCE)
    public @interface Getter {
        lombok.AccessLevel value() default lombok.AccessLevel.PUBLIC;
        
        AnyAnnotation[] onMethod() default @AnyAnnotation;
        
        boolean lazy() default false;
        
        @Deprecated
        @Retention(RetentionPolicy.SOURCE)
        @Target({})
        @interface AnyAnnotation {}
    }
    View Code

    我们看源码及其注释发现

    1.用处:TYPE(为所有字段生成getter方法)  FIELD(为注解字段生成getter方法)

    2.注解类型:SOURCE

    3.属性

       value :控制getter方法的级别 默认public

    lombok.AccessLevel value() default lombok.AccessLevel.PUBLIC;
    
    
    public enum AccessLevel {
        PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE,
        /** Represents not generating anything or the complete lack of a method. */
        NONE;
    }

    value设置为NONE可以不生成这个字段的getter方法,MODULE,PACKAGE都是生成的默认方法级别

    AnyAnnotation[] onMethod() default @AnyAnnotation;

    boolean lazy() default false;

    其他注解类似。

  • 相关阅读:
    CodeForcesGym 100517B Bubble Sort
    CodeForcesGym 100517H Hentium Scheduling
    BZOJ 1208: [HNOI2004]宠物收养所
    BZOJ 1503: [NOI2004]郁闷的出纳员
    BZOJ 1588: [HNOI2002]营业额统计
    sublime 3 user Settings
    sublime 3 注册码
    Why does this json4s code work in the scala repl but fail to compile?
    cat 显示指定行
    Spark Kill Application
  • 原文地址:https://www.cnblogs.com/chengxuyuan-liu/p/10638624.html
Copyright © 2011-2022 走看看