委托给一个类而不在公共构造函数中提供它

假设你要委托给类, 但不希望在构造函数参数中提供委托的类。相反,你希望私下构造它,使构造函数调用者不知道它。起初这似乎是不可能的,因为类委托只允许委托构造函数参数。但是,有一种方法可以做到这一点,如下面的答案所示

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 问题