-
[Kotlin] val / const valKotlin/Types 2021. 7. 21. 18:32
val 프로퍼티
runtime시점에 값을 할당
할당 가능한 타입: 기본 타입, 참조 타입
const val 프로퍼티
const키워드
compile시점에 값을 할당
compile시점에 할당된다는 것은 메서드, 생성자 등으로 할당할 수 없다는 말이다.
그렇기 때문에 기본 자료형의 리터럴로 초기화해야한다.
또는 현재 const val 프로퍼티의 코드 윗줄에 선언된 다른 const 프로퍼티로 초기화하는 것도 가능하다
할당 가능한 타입: 기본타입, String
다음의 조건을 만족하지 않으면 에러가나게 된다.
read-only(val)프로퍼티의 값을 compile시점에 예상할 수 있으면 const modifier를 사용해라.
const프로퍼티는 다음을 만족해야 한다.
- top-level 프로퍼티가 가능하다(top-level에서 선언되어야 한다)
- object또는 companion objcet의 멤버일 수 있다.
- String이나 primitive로 초기화되어야 한다.( 컴파일 시점이기 때문에 참조타입 불가, String리터럴은 예외)
- custom getter를 사용해서는 안된다.
top-level 포스팅 참고
https://hellose7.tistory.com/27
( 위의 참고 포스팅에 상세하게 적혀있다 )
하는김에 var까지 확인하자.
val이면 값 변경이 불가능하므로 final로
top-level에 선언되면 static으로
top level function의 경우 open키워드가 없으면 default로 확장이 불가능한 final로 된다.
TestKt.java
const val과 val은 모두 static final로 만들어지는데 차이는 const val는 getter메서드가 존재하지 않음을 볼 수 있다.
A.java
'Kotlin > Types' 카테고리의 다른 글
[Kotlin] Array (0) 2021.12.16 [Kotlin] Nothing, Unit (0) 2021.08.16 [Kotlin] Type check and Type casts (0) 2021.08.13 [Kotlin] 코틀린 패키지 / .kt파일과 .java파일 (feat. top-level선언) (0) 2021.07.21 [Kotlin] 변수/자료형 (0) 2021.07.07