public class JavaPerson {
private final String name;
private int age;
public JavaPerson(String name) {
this.name = name;
}
public JavaPerson(String name, int age) {
this.name = name;
this.age = age;
}
@NotNull
public String getName() {
return name;
}
@NotNull
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class Person constructor(name: String, age: Int) {
val name = name
var age = age
}
코틀린에서는 기본이 public이기 때문에 생략이 가능하다.
프로퍼티 = 필드 + getter + setter
코틀린에서는 필드만 만들면 getter, setter는 자동으로 만들어준다.
constructor라는 지시어는 생략이 가능하다.
코틀린에서는 생성자를 선언할 때 바로 프로퍼티를 선언할 수 있다.
//클래스의 바디는 아무것도 없기때문에 생략 가능하다.
class Person (val name: String, var age: Int)
.필드를 통해 바로 getter와 setter를 가져올 수 있다.
person.age = 10 //setter
println(person.name) //getter
코틀린에서 자바 클래스를 쓸 때에도 .필드로 getter, setter를 사용할 수 있다.
val javaPerson = JavaPerson("류욱상", 100)
javaPerson.age = 10
println(javaPerson.age)
println(javaPerson.name)
클래스가 생성되는 시점에 나이를 검증해보자
public JavaPerson(String name, int age) {
if (age <= 0) {
throw new IllegalArgumentException(String.format("나이는 %s일 수 없습니다.", age));
}
this.name = name;
this.age = age;
}
class Person(val name: String, var age: Int) {
init {
if (age <= 0) {
throw IllegalArgumentException("나이는 ${age}일 수 없습니다.")
}
}
}