java动态 生成get set_java 自动生成get set toString equals hashcode方法利器lombok.jar

我们在日常的开发、维护过程中,通常会遇到大量的javabean,通过IED自动去生成getter、setter、equals、hashcode、toString等相关方法,一旦修改或新增还要重新设置,这样没有意义、有重复的工作实际上没有太多意义且java文件含有大量冗余的代码,这时我们可以通过lombok相关注解的方式来去解决这些问题

Lombok简介可以通过注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具类官方地址:https://projectlombok.org/

github地址:https://github.com/rzwitserloot/lombok

eclipse安装

下载lombok.jar 双击

aIhTVMbe688faeb74e4b8d8ac30050907e9beb.png

点击 Specify location 选择你安装的eclipse.exe ,点击Install/Update即可

或者

打开eclipse.ini 新增-javaagent:E:\eclise_oxygen\eclipse\lombok.jar

指定lombok.jar路径即可

重启eclipse生效

Lombok使用

maven pom.xml新增

org.projectlombok

lombok

1.16.20

常用注解

@Getter/@Setter

作用在类上或属性上,放在类上,对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法@Getter

@Setter

public class T implements Serializable{

private String userName;

private String password;

}

等同于public class T implements Serializable{

private String userName;

private String password;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

@ToString

作用在类上,生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割@ToString

public class T implements Serializable{

private String userName;

private String password;

}

等同于public class T implements Serializable{

private String userName;

private String password;

@Override

public String toString() {

return "T (userName=" + userName + ", password=" + password + ")";

}

}

@EqualsAndHashCode

会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可指定具体使用哪些属性@EqualsAndHashCode

public class T implements Serializable{

private String userName;

private String password;

}

等同于public class T implements Serializable{

private String userName;

private String password;

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

T other = (T) obj;

if (password == null) {

if (other.password != null)

return false;

} else if (!password.equals(other.password))

return false;

if (userName == null) {

if (other.userName != null)

return false;

} else if (!userName.equals(other.userName))

return false;

return true;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((password == null) ? 0 : password.hashCode());

result = prime * result + ((userName == null) ? 0 : userName.hashCode());

return result;

}

}

@NoArgsConstructor @AllArgsConstructor

无参构造器、全参构造器

@RequiredArgsConstructor

部分参数构造器, 该注解会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法

该注解有3个参数可设置onConstructoronConstructor=@__({@AnnotationsHere})

比如@RequiredArgsConstructor(onConstructor = @__(@Autowired))

public class TService{

private TDao tDao;

}

等同于@Service

public class TService{

@Autowired

private TDao tDao;

}access 构造函数访问修饰符,默认public

staticName

如果设置了它,将添加一个静态构造方法名字是设置的字符串的名字,访问修饰符为公有的@RequiredArgsConstructor(staticName="t")

public class T implements Serializable{

private String userName;

private String password;

}

等同于public class T implements Serializable

{

private String userName;

private String password;

public static T t()

{

return new T();

}

@Data

包含@ToString

@EqualsAndHashCode

@Getter

non-final属性的@Setter

@RequiredArgsConstructor

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值