Data Class

  • 클래스 중 데이터만을 갖는 클래스

  • 제약사항

    • primary constructor (default constructor)를 선언해 주어야한다.

      • 그 인자는 1개 이상이어야 하며, 모두 Property여야 한다. ( var 혹은 val )

    • abstract, open, sealed, inner 가 아니어야 한다.

  • 장점

  • 컴파일러가 자동으로 equals(), hashcode(), copy(), toString() 메소드를 생성해준다.

  • componentN() 함수를 제공한다. (Destructuring)

  • 데이터에 대해 신경쓰지 않고 로직에만 집중할수 있다.

//java
public class JavaPerson {

    private String firstName;

    private String lastName;

    private int age;

    public String getFirstName() { return firstName; }

    public void setFirstName(String firstName) { this.firstName = firstName; }

    public String getLastName() { return lastName; }

    public void setLastName(String lastName) { this.lastName = lastName; }

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

        JavaPerson that = (JavaPerson) o;

        if (age != that.age) {
            return false;
        }
        if (firstName != null ? !firstName.equals(that.firstName) : that.firstName != null) {
            return false;
        }
        return lastName != null ? lastName.equals(that.lastName) : that.lastName == null;
    }

    @Override
    public int hashCode() {
        int result = firstName != null ? firstName.hashCode() : 0;
        result = 31 * result + (lastName != null ? lastName.hashCode() : 0);
        return result;
    }
}

//후...

간-결

기본적으로 Property 들만 만들어 주면 되고, 그 외에 커스텀하게 Function 이라던지 Method 라던지 어떤 상태를 표시해 주려면 그것들만 별도로 구현해 주면 된다.

Last updated