这就是我知道如何在 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/