美文网首页
Lombok的使用

Lombok的使用

作者: 风月寒 | 来源:发表于2020-10-30 10:53 被阅读0次

    Lombok是一个编译时帮助我们生成类的getter、setter、toString等的第三方库,让我们不需要给实体类手动写getter、setter。

    集成

    1、安装插件

    File => Settings => Plugins,插件市场搜索Lombok,安装,重启工具
    

    2、添加Lombok依赖

    //1、lombok依赖
    implementation 'javax.annotation:javax.annotation-api:1.2'
    //依赖lombok的API,内部虽然已经声明了注解解释器,但在AndroidStudio上有Bug(导致编译报错找不到生成的方法),需要自己主动再声明一次
    implementation 'org.projectlombok:lombok:1.16.6'
    //主动声明注解解释器
    annotationProcessor 'org.projectlombok:lombok:1.16.6'
    

    3、添加Lombok配置文件

    在项目根目录,添加lombok.config文件,填入以下内容

    lombok.anyConstructor.suppressConstructorProperties=true
    config.stopBubbling=true
    lombok.equalsAndHashCode.callSuper=call
    

    4、配置注解处理器

    模块的build.gradle文件,找到defaultConfig,加入以下配置,同步一下即可

    defaultConfig {
        //3.配置注解处理器
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath = true
            }
        }
    }
    
    注解说明
    AllArgsConstructor

    生成全参数的构造函数

    @AllArgsConstructor(staticName = "of")

    使用这个参数可以将构造函数变成静态工厂类。此时不可以再new,只能使用静态工厂类。

    @AllArgsConstructor(access = AccessLevel.PROTECTED)

    用这个可以控制访问范围,比如 public、private

    Builder

    生成builder模式的类

    Cleanup

    关闭资源,比如IO流对应的对象,加入该注解,可以自动关闭流

    Data

    对对应的对象生成get()/set()/需要参数的构造方法/toString()/hashcode()

    Getter

    生成get()

    @Getter(lazy=true)

    延迟加载

    可用于类和成员变量

    对于某些操作可以不必在初始化的时候加载而是等到了需要再去加载,此时就需要进行延迟加载

    对于字段,需要final

    NoArgsConstructor

    生成没有参数的构造方法

    NonNull

    参数不为null

    RequiredArgsConstructor

    生成一个或多个参数的构造函数

    需要注意的是,这个注解只会对final和@NonNull字段生成对应参数的构造函数。

    Setter

    生成set()

    SneakyThrows

    抛异常

    Synchronized

    同步

    ToString

    生成toString()

    val

    变量或对象为final

    @Value

    与@Data相似,区别是不再提供@Setter,每个成员变量都是final和private的,实例化需要提供所有参数用于初始化

    具体使用

    先创建一个User类

    @Data
    @AllArgsConstructor
    @RequiredArgsConstructor
    public class User {
        private String name;
        private int age;
    }
    
    

    然后在activity里面直接调用

    public class MainActivity extends AppCompatActivity {
        private TextView textView;
        private User user;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textView = findViewById(R.id.tv);
            user = new User("zzf",18);
            textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    textView.setText(user.getName() +"---"+user.getAge());
                }
            });
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Lombok的使用

          本文链接:https://www.haomeiwen.com/subject/bborvktx.html