使用lombok时可以自定义get、set方法

项目中遇到的一个问题,先把结论写在这里:

        当使用lombok时,部分get、set方法需要自定义,lombok不会再生成对应的方法。所以自己写get、set方法和lombok生成的方法不冲突。

 

可能看到这里,对于问题以及问题的结论都看得云里雾里,那么我举个列子:

在Idea里创建两个Bean类CupA和CupB,都使用@Data注解,只是CupA的cup属性的set方法自定义。

CupA.java

import lombok.Data;

@Data
public class CupA {

    public String color;

    public String cup;

    public void setCup(String cup) {
        if(cup==null || "".equals(cup))
            cup="0";
        this.cup = cup;
    }
	
}

 

CupB.java

import lombok.Data;

@Data
public class CupB {

    public String color;

    public String cup;

}

 

接下来看一下Structure这个框(使用eclipse的同鞋可以看outline这个框)。

 

不难发现,左边自定义的setCup图标和其他方法不一样,而lombok没有再生成setCup方法了。所以有自定义的方法时,lombok不再生成对应的方法。所以我们在体验lombok方便的同时,也可以愉快的自定义bean中的方法了。

 

--------------------------------------------------------------------------- 分割线 --------------------------------------------------------------------------

我在项目中遇到的问题:

        实体类B拷贝给实体类A,实体类B中的属性如果是空,则拷贝给A的时候给A的属性赋值为0;(下面用CupB、CupA表示)

        最简单的方法是,给CupB的属性赋值的时候做判断,但是一个大的项目里,CupB的使用次数是相当庞大的,所以想到修改CupA这个一劳永逸的方案。

        但是对BeanUtil方法不了解,不知道实体类自定义方法后,拷贝属性会不会报错,或者不生效啥的(这个想法是真的蠢了),自己在项目里写了两个实体类和一个main方法测试一下。

 

测试用的main方法:

import org.springframework.beans.BeanUtils;

public class Demo {
    public static void main(String[] args) {
        CupA cupA = new CupA();
        CupB cupB = new CupB();
        cupB.setCup("");
        BeanUtils.copyProperties(cupB,cupA);
        System.out.println("结果:"+cupA.getCup());
    }
}

输出结果是:

 

所以呢,知道了两件事情:

1.使用lombok时可以自定义属于自己的方法

2.bean拷贝时,当然是会使用到get、set等方法的,所以放心自定义好了,都是会执行到的。

 

所以呢,写完之后还是觉得比较蠢!!!

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值