getValue所在位置是kotlin.getValue,其相關用法介紹如下。

用法一

operator fun <V> KProperty0<V>.getValue(
    thisRef: Any?, 
    property: KProperty<*>
): V

一個擴展運算符,允許將類型為 V 的隻讀屬性委托給對類型為 V 的屬性或其子類型的屬性引用。

接收者

V 類型或其子類型的隻讀或可變屬性的屬性引用。引用沒有接收器,即它引用頂級屬性或將接收器綁定到它。

例子:

class Login(val username: String)
val defaultLogin = Login("Admin")
val defaultUsername by defaultLogin::username
// equivalent to
val defaultUserName get() = defaultLogin.username

用法二

operator fun <T, V> KProperty1<T, V>.getValue(
    thisRef: T, 
    property: KProperty<*>
): V

一個擴展運算符,允許將類型為 V 的隻讀成員或擴展屬性委托給對類型為 V 或其子類型的成員或擴展屬性的屬性引用。

接收者

V 類型或其子類型的隻讀或可變屬性的屬性引用。該引用具有類型為 T 的未綁定接收器。

例子:

class Login(val username: String)
val Login.user by Login::username
// equivalent to
val Login.user get() = this.username

用法三

operator fun <T> Lazy<T>.getValue(
    thisRef: Any?, 
    property: KProperty<*>
): T

T 類型的隻讀屬性委托給 Lazy 的實例的擴展。

此擴展允許使用 Lazy 實例進行屬性委托:val property: String by lazy { initializer }