[Kotlin] 코틀린 constructor vs init block Constructor 와 init코틀린에서는 class를 초기화 할때 두가지 방법을 제공합니다.constructor (생성자)를 이용하거나 init()을 사용하여 객체가 생성될때 필요한 초기화 작업을 할 수 있습니다. 그럼 어떤 순서로 두개가 초기화 될까요? 초기화 순서를 명시적으로 알고 있지 않으면 val로 정의한 함수에서 NPE가 발생하는 상황을 만날수도 있습니다.이런경우 IDE에서 아무런 warning이 발생하지 않을 수 있기 때문에 문제를 파악하기엔 더 어렵습니다. constructor, initializer코틀린에서 객체를 생성하면 초기화를 위한 코드들이 호출 되며, 아래와 같은 부분이 초기화 대상 입니다. Property initalizersval count: Int = 0 프로퍼트 선언과 동.. 개발이야기/Kotlin 7년 전
[Kotlin] 코틀린 null 처리 - ? ?. ?: !!, let, lateinit, 제너릭, 플랫폼 타입 이 글은 Kotlin In Action을 참고 하였습니다.더욱 자세한 설명이나 예제는 직접 책을 구매하여 확인 하시기 바랍니다 코틀린에서는 자바보다 null 처리를 좀더 명확하게 합니다. 따라서 NPE(NullPointerException)가 발생하는 빈도를 현저히 낮출 수 있습니다.6.1.1 null이 될수 있는 type코틀린은 null이 될수 있는 type을 명시적으로 표시할 수 있습니다. //자바 public int getLen(String str) { return str.lengh(); } 자바에서 위 함수는 컴파일시 문제없이 빌드 되지만, run time에 인자로 null이 들어오면 NPE가 발생합니다. fun getLen(str: String) = str.length 코틀린에서는 명시적으로 n.. 개발이야기/Kotlin 7년 전
[Kotlin] 코틀린 class 생성자와 property 이 글은 Kotlin In Action을 참고 하였습니다.더욱 자세한 설명이나 예제는 직접 책을 구매하여 확인 하시기 바랍니다4.2 Class의 생성자와 property코틀린에는 주 생성자와(primary constructor)와 부생성자가(secondary constructor)가 존재합니다.주 생성자는 class 선언과 함께 선언하고, 부 생성자는 추가적인 생성자가 필요할때 사용합니다. 4.2.1 주 생성자와 초기화(init)class User(val nickname: String) 주 생성자는 클래스 선언과 함께 정의됩니다. class User constructor(_nickname: String) { val nickname: String init { nickname = _nickname } } c.. 개발이야기/Kotlin 7년 전