java - 如何一次生成构造函数、getter、setter、equals&hashcode和toString?
问题描述
假设我有一个数据类,我在其中编写了属性:
public class Person
{
private String name;
private int age;
}
现在,我想用一个生成过程创建以下内容:
public class Person
{
private String name;
private int age;
public Person()
{
}
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode()
{
return Objects.hash(name, age);
}
@Override
public String toString()
{
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
我知道我可以自动生成空构造函数,然后自动生成所有 args 构造函数,然后自动生成 getter 和 setter,然后自动生成 equals 和 hashcode,然后自动生成 toString。
我对我创建的每一个数据类都这样做,它变得越来越乏味。
解决方案
有一个依赖调用 Lombok,您可以在其中在类的顶部添加注释,它可以自动为您创建 getter 和 setter、构造函数以及 toString 和 hashCode 方法。在您的情况下,此代码将自动为您添加 getter、setter、toString、equals 和 hashcode、builder、..
@Getter
@Setter
@NoArgsConstructor // <--- THIS is it
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class Person
{
private String name;
private int age;
}
推荐阅读
- c# - 根据条件在 foreach 中跳过记录的最干净方法
- qt - 我的自定义小部件未显示在 Qt Creator / Qt Designer 中,但在我执行程序时显示
- android - 找不到参数的方法 firebaseAppDistribution()
- spring-boot - 无法判断 Hystrix 电路是否用千分尺强制打开
- python - Python 替换外部 SQL 查询中的引用值
- javascript - 更新时调用了两次 Sequelize afterValidate 钩子
- c# - 如何在 SerialPort 类 C# 中检测串行位字节错误
- azure - 微软 Azure DNS 缓存
- git - github - 如何将提交转移到来自同一分支的另一个拉取请求
- .net - Reference Assemblies 和 Windows Framework 目录中不同版本的 System.Net.Http