본문 바로가기
개발자/Android

[Android/Kotlin] Kotlin 의 val 에 대해서

by Alex.K 2017. 9. 19.
반응형

[Kotlin] val 프로퍼티에 대해서


Android App 개발시 Java를 사용할때에는 상수를 정의할때, final 을 사용했습니다.


처음 Kotlin을 접했을때에는 상수를 정의할때에는 어떤것을 써야하지? 라는 의문이 생겼고 지금까지는 val 프로퍼티가 상수로 불변값으로 생각했었습니다.


하지만 Kotlin 사이트내 설명 문구에서


"Classes in Kotlin can have properties. These can be declared as mutable, using the var keyword or read-only using the val keyword."


진하게 표시된 Read-Only 라는 글이 보이시나요?


네, 그렇습니다. immutable이 아닌 read-only 네요..;;


갑자기 궁금해져서 val 가 immutable이 아닌것을 확인해보고 싶었습니다.


테스트 코드 가동!!



class KotlinSpec {

    interface Counter {
        val count: Int
    }

    class SomeCounter: Counter {
        var _counter = 0

        override val count: Int
            get() = _counter++
    }

    @Test
    fun isValMutableTest() {
        val counter = SomeCounter()
        assertEquals(counter.count, 0)
        assertEquals(counter.count, 1)
    }
}


위와 같이 코드를 짜서 테스트를 돌리니 테스트가 정상으로 성공하네요.


따로 getter를 두지 않고 변수 선언과 동시에 초기화를 하게 되면 set을 할 수 없으니 immutable과 같다고 볼 수 있겠지만, 정확하게 알고 가는게 좋을것 같습니다.

(레퍼런스 사이트에서 영어라고 꼼꼼하게 읽어보지 않은 제 잘못이 크죠...)


간단한 내용이지만 읽어주셔서 감사합니다~

반응형

댓글