Home > Net >  How to generate constructors, getters, setters, equals&hashcode, and toString at once?
How to generate constructors, getters, setters, equals&hashcode, and toString at once?

Time:09-22

Let's say I have a data class where I have written the properties:

public class Person
{
    private String name;
    private int age;
}

Now, I want to create the following with just one generation process:

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  
                '}';
    }
}

I know that I could auto-generate the empty constructor, then auto-generate the all args constructor, then auto-generate getters and setter, then auto-generate the equals and hashcode, then auto-generate the toString.

I do this for every single data class I create and it becomes more and more tedious.

CodePudding user response:

There is a denpendency call Lombok where you can adding annotation on the top of the class and it can automaticcally create getter and setter, constructor and toString and hashCode method for you. In your case, this code will automatically add getter, setter, toString, equals and hashcode, builder, .. for you

@Getter 
@Setter 
@NoArgsConstructor // <--- THIS is it
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class Person
{
    private String name;
    private int age;
}
  • Related