다양한 클래스 타입
12 Apr 2019 | Kotlindata class
data class LogItem(val text: String, val timestamp: String)
data 클래스는 데이터만을 갖는 클래스입니다. 반드시 디폴트 생성자를 선언해야 하며, 인자는 val 또는 var 키워드를 꼭 사용해야 합니다. 컴파일러는 자동으로 equal() 및 toString() 함수를 생성해줍니다.
enum class
코틀린에서 enum은 다음과 같은 형태로 선언할 수 있습니다.
enum class COLOR(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF),
}
enum class STATUS(val text: String) {
STARTED("Started"),
FINISHED("Finished"),
FAILED("Failed"),
UNKNOWN("Unknown"),
}
사용 방법은 다음과 같습니다.
var color = COLOR.BLUE println(color) println(color.rgb) var status = STATUS.STARTED println(status) println(status.text)
sealed class
sealed 클래스는 프로그램 내부에서는 상속을 할 수 있지만, 외부 모듈에서는 상속을 할 수 없도록 하는 키워드입니다. 다음과 같이 사용할 수 있습니다.
sealed class SnowSDK {
}
같은 프로젝트 안에만 있다면 sealed 클래스를 상속한 클래스가 어느 파일에 위치하든지 상관이 없습니다.
object 타입
익명(anonymous) 클래스를 사용할 때 Java에서는 다음과 같이 사용했습니다.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO
}
});
하지만 코틀린에서는 다음과 같이 object 키워드를 이용해서 익명 클래스를 사용할 수 있습니다.
button.setOnClickListener(object : View.OnClickListener() {
fun onClick(v: View) {
TODO("...")
}
})