zoukankan      html  css  js  c++  java
  • lombok标签之@Data @AllArgsConstructor @@NoArgsConstructor -如何去除get,set方法。@Data注解和如何使用,lombok

     

    在代码中我们可以只加上标签@Data 而不用get,set方法;

    val : 和 scala 中 val 同名, 可以在运行时确定类型;

    @NonNull : 注解在参数上, 如果该类参数为 null , 就会报出异常,  throw new NullPointException(参数名)

    @Cleanup : 注释在引用变量前, 自动回收资源 默认调用 close() 方法

    @Getter/@Setter : 注解在类上, 为类提供读写属性

    @Getter(lazy=true) :

    @ToString : 注解在类上, 为类提供 toString() 方法

    @EqualsAndHashCode : 注解在类上, 为类提供 equals() 和 hashCode() 方法

    @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor : 注解在类上, 为类提供无参,有指定必须参数, 全参构造函数

    构造函数
    @AllArgsConstructor

    会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验, 
    全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。

    @NoArgsConstructor

    无参构造函数

    @RequiredArgsConstructor

    会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法。

    @Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法

    @Value :

    @Builder : 注解在类上, 为类提供一个内部的 Builder

    @SneakThrows :

    @Synchronized : 注解在方法上, 为方法提供同步锁

    @Log :

    @Log4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象

    @Slf4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象



    @Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);
    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);

    上面一些注解是由包含关系的, 看需要什么方法就增加什么注解,@Log4j 和 @Slf4j 注解作用不小, 用在各层都可以,方便打 log。

    也可以查看官网 [ 官网 ] 

    简易例子:[ 只是用了@Data注解 ]

    复制代码
    public @Data class Student {
         
         private String stuId;
         private String stuName;
         private String stuNum;
         private String stuSex;
     }
    复制代码

    虽然说,eclipse 的快捷键生成这些代码会很快,但是知道总比不知道的好,万一别人用了,你看不懂别人的代码呢?那就不面子丢大了,还只是个实体类而已。

    我觉得最重要的是,代码行数少了很多,简洁的代码谁不喜欢呢?

    还有一点, 使用这个 lombok 需要安装 lombok 插件。

    主要的作用提高代码的简洁
    @Data
    去除一些重复的get,set方法,
    1.需要官网下载jar包
    https://projectlombok.org/download
    2运行jar包,添加到eclipse目录下
    点击install/update按钮,即可安装完成
    检查eclipse.ini文件最后是否添加了jar包
    3然后重启一下eclipse,
    4最重要的是需要在maven中引入
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.6</version>
    </dependency>
    比较一下:
    原来的代码

    public class EnergySource {

    private String energySourceId;
    private String fuel;
    private String industrialWater;
    private String gas;
    private String naturlGas;
    private String steam;
    private String oxygenNitrogen;
    private String compressedAir;
    private String dynamicMedium;
    public String getEnergySourceId() {
    return energySourceId;
    }
    public String getFuel() {
    return fuel;
    }
    public String getIndustrialWater() {
    return industrialWater;
    }
    public String getGas() {
    return gas;
    }
    public String getNaturlGas() {
    return naturlGas;
    }
    public String getSteam() {
    return steam;
    }
    public String getOxygenNitrogen() {
    return oxygenNitrogen;
    }
    public String getCompressedAir() {
    return compressedAir;
    }
    public String getDynamicMedium() {
    return dynamicMedium;
    }
    public void setEnergySourceId(String energySourceId) {
    this.energySourceId = energySourceId;
    }
    public void setFuel(String fuel) {
    this.fuel = fuel;
    }
    public void setIndustrialWater(String industrialWater) {
    this.industrialWater = industrialWater;
    }
    public void setGas(String gas) {
    this.gas = gas;
    }
    public void setNaturlGas(String naturlGas) {
    this.naturlGas = naturlGas;
    }
    public void setSteam(String steam) {
    this.steam = steam;
    }
    public void setOxygenNitrogen(String oxygenNitrogen) {
    this.oxygenNitrogen = oxygenNitrogen;
    }
    public void setCompressedAir(String compressedAir) {
    this.compressedAir = compressedAir;
    }
    public void setDynamicMedium(String dynamicMedium) {
    this.dynamicMedium = dynamicMedium;
    }
    @Override
    public String toString() {
    return "EnergySource [energySourceId=" + energySourceId + ", fuel=" + fuel + ", industrialWater="
    + industrialWater + ", gas=" + gas + ", naturlGas=" + naturlGas + ", steam=" + steam
    + ", oxygenNitrogen=" + oxygenNitrogen + ", compressedAir=" + compressedAir + ", dynamicMedium="
    + dynamicMedium + "]";
    }

    }
    加注解的代码

    import lombok.Data;

    @Data
    public class EnergySource {

    private String energySourceId;
    private String fuel;
    private String industrialWater;
    private String gas;
    private String naturlGas;
    private String steam;
    private String oxygenNitrogen;
    private String compressedAir;
    private String dynamicMedium;

    }

    还有一些提供的注解:
            @Data   :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
            @Setter:注解在属性上;为属性提供 setting 方法
            @Getter:注解在属性上;为属性提供 getting 方法
            @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
            @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
            @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

    参考:如何去除get,set方法。@Data注解和如何使用,lombok

    参考:@Data 注解引出的 lombok 小辣椒

  • 相关阅读:
    第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤
    PyQt学习随笔:Model/View开发时在view数据项中设置不同角色数据的方法
    PyQt学习随笔:Model/View开发时从Model相关类派生自定义类需要注意的问题
    PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项
    PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法
    Python中高级知识(非专题部分)学习随笔
    clistctrl 虚拟列表
    数字图象处理图片库
    MFC中char*,string和CString之间的转换
    图像分割之(四)OpenCV的GrabCut函数使用和源码解读
  • 原文地址:https://www.cnblogs.com/aspirant/p/10298752.html
Copyright © 2011-2022 走看看