IDE가 정적으로 코드를 생성해 주면 지겨운 타이핑 시간을 줄일 수 있지만, 이와 같은 난잡한 코드를 계속 소스에 포함해야 하고 이는 코드 가독성에 도움이 되지 않는다. 설상가상으로 이런 코드를 유지 보수해야 한다! 나중에 hashCode와 equals에 포함되어야 하는 프로퍼티를 추가한다면 두 메서드를 삭제하고 재생성해야 한다. 코틀린은 이런 일을 더 단순화해 준다.
data class Person(val name: String, val registered: Instant = Instant.now())
그렇다. 단지 클래스 정의 맨 앞에 data를 추가하면 된다. 이 코드를 컴파일하면 hashCode와 equals 함수가 생성된다. 각각의 코드를 볼 수는 없지만, 일반 함수처럼 쓸 수는 있다. 더 나아가 코틀린은 유용한(읽기 좋은) 정보를 보여주는 toString 함수와 기존 객체의 모든 프로퍼티를 복사해 저장한 새 객체를 만들어내는 copy 함수도 생성해 준다. 게다가 코틀린은 componentN 함수도 만들어 준다(여기서 N은 정수). 이 함수를 통해 클래스의 각 프로퍼티에 접근할 수 있다. 이 방법은 다음 절에서 설명한다.