본문 바로가기
스프링 부트/코틀린

[코틀린] 데이터 클래스 data class

by illlilillil 2022. 3. 9.

기존 자바는 POJO라는 것이 코드를 많이 차지하고 있다.

public class Person {
    String name;
    int age;
    String gender;
    
    public Person(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
}

 

코틀린은 데이터만을 다루는 클래스에 대해서 간편한 문법을 제공한다.

data class Person(var name: String, var age: Int, var gender: String)

이렇게 선언만 해도 생성자, Getter,Setter, equals, hashcode,toString까지 알아서 생성한다.

그러나 Data class에는제한 사항이 있다.

  • 기본 생성자에 최소 하나 이상의 파라미터 존재
  • 파라미터는 var or val이여야 한다.
  • abstract, open, sealed, inner이면 안된다.

 

  • equlas: Boolean - 데이터 클래스 간의 값 일치를 비교
  • hashCode(): Int - 같은 인스턴스는 같은 값을 반환해야 한다.
  • toString(): String - 멤버 변수 값을 나열할 수 있도록 재정의한다.

 

copy()


copy() 메소드로 깊은 복사를 수행할 수 있다.

val james = Person("James", 20, "male")
val tom = james.copy(name = "abc")  // 이름만 Tom으로 바꾸고 나이와 성별은 james에서 복사

댓글