개발/안드로이드
코틀린에서 const val 과 val 차이
장모
2021. 2. 21. 06:52
자바에서 상수를 선언할 아래와 같이 사용한다
class PageLoader {
public static final int PAGE_SIZE = 20;
}
코틀린에서는 보통 companion object에서 상수를 선언해 사용하는데,
val만 사용해도 변경이 안되기 때문에 아래처럼 사용하기도 한다.
class PageLoader {
companion object {
val PAGE_SIZE = 20
}
}
코틀린만 보면 별 차이가 없는데, 코틀린에서 선언된 PAGE_SIZE를 자바에서 사용하려면 함수가 되어 있는 것을 볼 수 있다.
PageLoader.Companion.getPAGE_SIZE();
맨 위의 자바 코드에서 처럼 만들려면 const를 붙여줘야 한다.
class PageLoader {
companion object {
const val PAGE_SIZE = 20
}
}
이렇게하면 자바에서도 변수로 사용할 수 있다.
PageLoader.PAGE_SIZE
결론, 기본적으로 val만 사용해도 변경할 수 없게 선언할 수 있지만 const를 붙여야 컴파일 타임에 할당되는 레알 상수를 만들 수 있다.
끝.