建设银行长春网站,e福州下载app,网站等级保护必须做吗,个人博客网站下载lombok为我们提供了Data注解#xff0c;帮助我们省略了Setter,Getter,ToString等注解#xff0c;一般对于普通的实体类使用该注解#xff0c;不会出现什么问题#xff0c;但是当我们把这个注解#xff0c;使用在派生类上#xff0c;就出现了一个警告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(callSuperfalse)
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(callSupertrue) 警告消失这时候我们再来看我们的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 result1当添加注解EqualsAndHashCode(callSupertrue)时变成了int resultsuper.hashCode()。这么一来好像就解决了在继承情况下使用Data注解的警告问题。但是问题是每一个继承的类都需要这么来解决也不是很方便。所以,lombok作者Roel也给出了解决办法就是通过自定义lombok.config文件来解决。3 解决方案二(配置lombok.config)lombok.config文件需要放在src/main/java文件夹下的目录中也可以放在实体同级目录下放在src/main/resources目录下不会生效。下面我们通过这种方式来解决这个警告的问题。3.1 新建lombok.config文件然后配置:config.stopBubblingtrue
lombok.equalsAndHashCode.callSupercall3.2 pom.xml文件中需要加入如下插件plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdconfigurationsource1.8/sourcetarget1.8/target/configuration
/plugin经过上两步步骤警告已经消失,如图:可以看到配置生效了然后Data注解这里的警告也立马消失了。