Kotlin 에서 읽기 전용 인 값을 만들고 싶다면, const val
, val
을 사용하면 된다. 오늘은 이 둘의 차이를 알아보려고 한다.
그전에! java 를 먼저 짚고 가자면..
Java 에서는 static, final 을 사용했었다. 간단하게 설명하면
String
, primitive type 으로 초기화되어야 한다.Java 에서는 Primitive type (원시 타입)과 Reference type (참조 타입) 을 구분한다.
Primitive type 이란?
Int, String, Boolean 등 실제 데이터 값을 저장하는 타입. 변수에 직접 값을 저장한다.
Reference type 이란?
객체의 주소를 저장해 참조하는 타입. 변수에 메모리상의 객체 주소값이 저장된다. 참조 타입은 런타임 시 객체가 할당된다.
벗!!! Kotlin 에서는 원시 타입과 참조 타입을 구분하지 않는다.
const 는 컴파일 시 할당되기 때문에, 런타임에 할당되는 reference type 을 사용하면, 컴파일 에러가 발생한다.
예시
const val SUBSYSTEM_DEPRECATED: String = "This subsystem is deprecated"
@Deprecated(SUBSYSTEM_DEPRECATED) fun foo() { ... }