왜 써야됨?
//이 자바코드가 아래 코틀린 한줄로 바꿀 수 있다
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;
}
// getter & setter 생략
}
어떻게 써야됨?
data class 클래스이름(var 변수1, var변수1){}
생성자, getter&setter, canonical methods까지 알아서 생성해줌
data class를 활용하기 위해서는 다음의 제한 사항
data class Person(var name: String, var age: Int, var gender: String)
그밖에도 지원하는 것
Canonical Methods
copy메소드
디스트럭쳐링(Destructuring)
Canonical Methods?
캐노니컬 메소드는 Any에 선언된 메소드 (Any는 자바의 Object처럼 코틀린에서 모든 객체의 조상이 되는 객체이다.) 따라서 코틀린의 모든 인스턴스가 갖고 있는 메소드를 뜻한다.
코틀린의 data class는 모든 캐노니컬 메소드를 올바르게 구현하고 있다.
val student = Member("jihee", 28)
val student1 = student.copy(name = "gilbog") // 이름만 gilbog로 바꾸고 나이는 student에서 복사
fun main (args:Array<String>) {
val student: simple = simple("김연아", 21)
var (name, age) = student
name="박지성"
println(student.name) //김연아
}