当前位置: 首页 > news >正文

泸州网站建设哪家好想学管理方面的培训班

泸州网站建设哪家好,想学管理方面的培训班,沈阳建设工程信息网 放心中项网,中国室内设计师网官网lombok为我们提供了Data注解,帮助我们省略了Setter,Getter,ToString等注解,一般对于普通的实体类使用该注解,不会出现什么问题,但是当我们把这个注解,使用在派生类上,就出现了一个警告1 情景再现父类:Data …

lombok为我们提供了@Data注解,帮助我们省略了@Setter,@Getter,@ToString等注解,一般对于普通的实体类使用该注解,不会出现什么问题,但是当我们把这个注解,使用在派生类上,就出现了一个警告

1 情景再现

父类:

@Data
public class BaseEntity {/*** 公共字段主键id*/private Integer id;/*** 公共字段创建时间*/private Date createTime;/*** 公共字段更新时间*/private Date updateTime;}

子类:

@Data
public class User extends BaseEntity {/*** 用户名*/private String username;/*** 密码*/private String password;}

此时,idea中显示,在子类的@Data注解的地方会出现警告,如图:

出现的警告信息:

Generating equals/hashCode implementation but without a call to superclass, even though this class 
does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' 
to your type.

大致意思是默认子类的equals和hashCode方法,不会包含或者考虑基类的属性。我们可以通过反编译工具查看项目target/classes目录下的User.class的hashCode方法,默认情况下属性都是使用的他自身的属性。

public int hashCode()
{int PRIME = 59;int result = 1;Object $username = getUsername();result = result * 59 + ($username == null ? 43 : $username.hashCode());Object $password = getPassword();result = result * 59 + ($password == null ? 43 : $password.hashCode());Object $mobile = getMobile();result = result * 59 + ($mobile == null ? 43 :     $mobile.hashCode());return result;
}

2 解决方案一(添加注解)

在警告的父类加上注解@EqualsAndHashCode(callSuper=true) ,警告消失

这时候,我们再来看我们的User.class中的hashCode方法:

public int hashCode()
{int PRIME = 59;int result = super.hashCode();Object $username = getUsername();result = result * 59 + ($username == null ? 43 : $username.hashCode());Object $password = getPassword();result = result * 59 + ($password == null ? 43 : $password.hashCode());Object $mobile = getMobile();result = result * 59 + ($mobile == null ? 43 : $mobile.hashCode());return result;
}

可以看出代码中不一样的地方,默认情况下是int result=1,当添加注解@EqualsAndHashCode(callSuper=true)时,变成了int result=super.hashCode()。

这么一来,好像就解决了在继承情况下使用@Data注解的警告问题。但是问题是,每一个继承的类,都需要这么来解决,也不是很方便。所以,lombok作者Roel也给出了解决办法,就是通过自定义lombok.config文件来解决。

3 解决方案二(配置lombok.config)

lombok.config文件需要放在src/main/java文件夹下的目录中(也可以放在实体同级目录下),放在src/main/resources目录下,不会生效。下面,我们通过这种方式来解决这个警告的问题。

3.1 新建lombok.config文件,然后配置:

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

3.2 pom.xml文件中需要加入如下插件:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration>
</plugin>

经过上两步步骤警告已经消失,如图:

可以看到,配置生效了,然后@Data注解这里的警告也立马消失了。

http://www.yayakq.cn/news/822660/

相关文章:

  • 网站开发 哪家好网页设计综合实训论文
  • 织梦dede模板自带的网站地图优化指南网站建设装修
  • 网站首页设计方案网站推广排名哪家公司好
  • 毕业设计代做网站有哪些实体店怎么引流推广
  • 广州h5设计网站公司中国建设银银行招聘网站
  • 商城网站建设效果拉米拉云网站建设
  • 信息技术制作网站网红营销案例
  • 石家庄医疗网站建设做饲料机的川工网站
  • 做网站赚钱还是企业宣传片注册深圳公司恒诚信流程
  • 深圳南山 网站建设高唐企业建网站服务商
  • 上海微网站建设方案长春 网络公司
  • 用php写的网站网站注册理由
  • 查看网站dns服务器什么网站可以做模型挣钱
  • 织梦 友情链接 网站名 分隔符erp系统仓库管理系统
  • 用.net做的网站吗个人开发网站要多少钱
  • 如何做电影网站狼视听人才招聘网最新招聘信息
  • 产品外包装设计网站网站优化工作室
  • 唐山网站制作企业怎么促成客户做网站
  • 有哪些外国网站做精油的南京华夏商务网做网站怎么样
  • 公司网站修改怎么做学院网站建设流程图
  • 专门做视频的网站吗英语培训机构前十名
  • 网页游戏网站556pk游戏福利平台四川建设网入川备案网站
  • 网站做不做百度云加速改版一个网站多少钱
  • 湖南视频网站建设生鲜网站建设规划书
  • 河南省建设培训中心网站网站建站的标准
  • 网站 平台建设情况介绍wordpress哪些文件需要给777
  • 海南百度网站建设餐饮网站建设
  • 百度站长平台app网站开发现状
  • 建设银行网站用户权限品牌网线有哪些
  • 网站开发部经理招聘寿县网站建设