2016-06-13 4 views
6

최종 필드를 private final String s (Java) 또는 val s (Kotlin)으로 선언했다고 가정 해 봅니다. 초기화하는 동안 원격 서비스에 대한 호출 결과로 필드를 초기화하려고합니다. Java에서는 생성자 (예 : s = RemoteService.result())에서 초기화 할 수 있지만 Kotlin에서는 필드를 말할 수있는 한 선언 된 동일한 줄에서 초기화해야하기 때문에이를 수행하는 방법을 알 수 없습니다. 여기서 해결책은 무엇입니까?Kotlin에서 최종 필드를 초기화하는 방법은 무엇입니까?

class MyClass { 

    val s: String 

    init { 
     s = "value" 
    } 

} 

답변

10

하면 초기화 블록 val 값을 설정할 수있다. 예 :

kotlin은 표현식의 반환 유형에서 s 유형을 추측합니다.

4

은 또한 값이 칭한다 처음 초기화한다 by lazy 값으로 초기화 할 수