是的,Kotlin 委托屬性(Delegated Properties)能提高代碼復用性。委托屬性允許一個屬性通過另一個屬性來訪問,而不需要在類中實現(xiàn)該屬性的 getter 和 setter 方法。這使得你可以將通用的邏輯抽象為一個單獨的屬性,然后在多個地方重用它。
委托屬性的基本語法如下:
var propertyName: Type by delegate
這里的 propertyName
是你要聲明的屬性名,Type
是屬性的類型,delegate
是一個實現(xiàn)了 PropertyDelegate
接口的對象。
委托屬性的優(yōu)點:
LazyProperty
、ValueProperty
等,以滿足不同的需求。下面是一個簡單的示例,展示了如何使用委托屬性:
class User(val name: String) {
var fullName: String by lazy { "$name ${name.reversed()}" }
}
fun main() {
val user = User("John")
println(user.fullName) // 輸出 "John nhoJ"
}
在這個示例中,fullName
屬性通過 lazy
委托實現(xiàn)來延遲計算其值。這樣,只有在第一次訪問 fullName
時才會計算其值,而不是在創(chuàng)建 User
對象時立即計算。這種延遲計算可以提高性能,因為只有在實際需要時才進行計算。