Kotlin 类委托(delegate)特性

标签 kotlin

这就是我知道如何在 Kotlin 中创建类委托(delegate):

class CustomList<T>(private val data: ArrayList<T> = ArrayList<T>()) : List<T> by data

但是,我不想将数据放入构造函数中,因为我希望在创建 CustomList 时列表为空:

class CustomList<T> : List<T> by data { 
    private val data = ArrayList<T>()
}

这似乎不起作用。

如何使 data 成为内部字段,并将 List 委托(delegate)给它的方法,而不必编写所有委托(delegate)方法?

最佳答案

Class Delegation目前只能用于主构造函数的参数。

解决方法:将主构造函数声明为私有(private)并提供委托(delegate)给它的公共(public)构造函数。

class CustomList<T> private constructor(private val data: List<T>) : List<T> by data {
    constructor() : this(ArrayList())
}

关于Kotlin 类委托(delegate)特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46806909/

相关文章:

groovy - 如何在Groovy中编写此Gradle构建脚本片段?

arrays - 如何在Kotlin中将对象, bool 值和long值添加到数组中?

java - Kotlin Generics declaration-site variance <in T> 构造

android - 如何制作从 ViewPager 到另一个 Fragment 的共享过渡动画?

java - Kotlin协程vs CompletableFuture

android - onBackPressed() 已弃用,有什么替代方案?

用于自动完成 Toast 的 Android Studio 快捷方式(Kotlin)

android - 如何使用 Kotlin 运行单个 Android 测试?

kotlin - Gradle Kotlin DSL扩展自

android - 为什么我的 RxJava 设置阻塞了我的 UI 线程?使用BluetoothAdapter.startLeScan回调