Разница между ленивой {} и getter () инициализацией в kotlin - PullRequest
2 голосов
/ 17 марта 2019

В котлине мы можем использовать оба этих подхода: lazy{} и getter()

Ленивая инициализация:

internal val connector by lazy {
        serviceConnector
    }

getter ():

internal val connector : ServiceConnector
        get() = serviceConnector

Когда использовать какой подход и что на самом деле делает эти два подхода под капотом.Какой из них лучше всего подходит?

1 Ответ

1 голос
/ 17 марта 2019

Когда вы используете делегат lazy, val инициализируется только при первом использовании.Итак, в вашем коде при первом обращении к connector запускается код внутри лямбды, и результат присваивается val.

get(), вместо этого используется для переопределениячто происходит, когда вы пытаетесь получить доступ к val.

...