primary constructor call expected 기본 생성자 호출이 필요 합니다 Kotlin 기본 생성자에 대한 호출이 Kotlin 보조 생성자의 정의에 없을 때 발생 class Student(var name: String="") { var age: Int = 14 constructor (name: String, age: Int){ this.age = age } fun printMsg(){ println("Name is $name. Age is $age."); }} this 키워드를 사용하여 해결 기본 생성자 똑는 기본 생성자를 호출하는 이전 보조 생성자에 대한 호출을 포함한다 class Student(var name: String="") { var age: Int = 14 construct..
lateinit var is initialized isInitialized 를 이용하여 lateinit var 이 초기화되었는지 여부를 확인 할 수 있다 12345678910111213class Foo { lateinit var lateTest: String fun init() { println("before init : ${this::lateTest.isInitialized}") lateTest = "value" println("after init : ${this::lateTest.isInitialized}") }} fun main(args: Array) { Foo().init()}Colored by Color Scriptercs + Reference http://kotlinlang.org/docs/r..
Kotlin 의 특수 기호 ?. safe call 을 수행한다메소드가 호출되거나 수신기가 null 이 아닌 경우 속성에 액세스 ?. 을 이용한 null safety if ( user != null )println("user is not null")elseuser = false 위의 코드를 ?. 을 이용하면 user?.let { println("user is not null") }.let { println("user is null") } 위와 같이 표현 할 수 있다 ?: 왼쪽의 값이 null 인 경우 오른쪽 값을 가져온다 ( 엘비스 연산자 ) Elvis Operator val l: Int = if( b != null ) b.length else -1 을 val l = b?.length ?: -1 처럼 표현..
lateinit vs lazy Kotlin 에서 초기화 지연 방식 두 가지를 지원한다 lateinit public class Test { lateinit var mock: Mock @SetUp fun setup() { mock = Mock() } @Test fun test() { mock.do() } } lazy public class Example{ val name: String by lazy { “Amit Shekhar” } } 언제, 어느것을 사용할지 선택하는 방법 - lazy 는 val 속성에만 사용할 수 있지만, lateinit 은 최종 필드로 컴파일 할 수 없기 때문에 vars 에만 적용 할 수 있으므로 불변성을 보장 할 수 없다. - lateinit var 는 객체가 보이는 곳이라면 어디서든..
3.1.0 업데이트 이후 DataBinding 생성 실패 gradle.properties 에 다음 두 줄을 추가 12android.enableExperimentalFeatureDatabinding = trueandroid.databinding.enableV2=truecs + References https://stackoverflow.com/questions/49514488/android-studio-fails-to-generate-databinding-after-3-1-0-update