如何一次生成构造函数、getter、setter、equals&hashcode 和 toString?
Posted
技术标签:
【中文标题】如何一次生成构造函数、getter、setter、equals&hashcode 和 toString?【英文标题】:How to generate constructors, getters, setters, equals&hashcode, and toString at once? 【发布时间】:2021-11-12 21:43:57 【问题描述】:假设我有一个数据类,我在其中编写了属性:
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 +
'';
我知道我可以自动生成空构造函数,然后自动生成 all args 构造函数,然后自动生成 getter 和 setter,然后自动生成 equals 和 hashcode,然后自动生成 toString。
我为我创建的每一个数据类都这样做,它变得越来越乏味。
【问题讨论】:
我已经尝试过 Kirill Korgov 的插件“Generatable”,但这也添加了一个我不想要的生成器。record
怎么样?
我去看看!谢谢!
【参考方案1】:
有一个依赖调用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;
【讨论】:
以上是关于如何一次生成构造函数、getter、setter、equals&hashcode 和 toString?的主要内容,如果未能解决你的问题,请参考以下文章
基于类的 vue 组件属性定义:构造函数 vs.getter/setter vs.mounted 生命周期