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