Kotlin班级代表团的特点

这就是我知道如何在Kotlin创建班级代表团:

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委托给它的方法,而不必编写所有的委托方法?

类委托当前只能用于主构造函数的参数。

解决方法:将主构造函数声明为private,并提供一个委托给它的公共构造函数。

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