这就是我在Kotlin中创建类授权的方法:
class CustomList<T>(private val data: ArrayList<T> = ArrayList<T>()) : List<T> by data
Run Code Online (Sandbox Code Playgroud)
但是,我不想将数据放在构造函数中,因为我希望列表在CustomList创建时为空:
class CustomList<T> : List<T> by data {
private val data = ArrayList<T>()
}
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.
如何创建data内部字段并将List委托给它的方法而不必编写所有委托方法?
类委派目前仅适用于主构造函数的参数.
解决方法:将主构造函数声明为private,并提供委托给它的公共构造函数.
class CustomList<T> private constructor(private val data: List<T>) : List<T> by data {
constructor() : this(ArrayList())
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |