委托给一个类而不在公共构造函数中提供它
假设你要委托给类, 但不希望在构造函数参数中提供委托的类。相反,你希望私下构造它,使构造函数调用者不知道它。起初这似乎是不可能的,因为类委托只允许委托构造函数参数。但是,有一种方法可以做到这一点,如下面的答案所示 :
class MyTable private constructor(table: Table<Int, Int, Int>) : Table<Int, Int, Int> by table {
constructor() : this(TreeBasedTable.create()) // or a different type of table if desired
}
有了这个,你可以像这样调用 MyTable
的构造函数:MyTable()
。MyTable
代表的 Table<Int, Int, Int>
将私下创建。构造函数调用者对此一无所知。
这个例子是基于这个 SO 问题 。