TargetTitleEntryController

TargetTitleEntryController

在java中

我可以实现两个类似的构造函数

public TargetTitleEntryController() { }

public <T extends Controller & TargetTitleEntryControllerListener> TargetTitleEntryController(T targetController) {
        setTargetController(targetController);
}

我想将其转换为Kotlin
class TargetTitleEntryController ()

与辅助构造函数。我不知道如何用Java对应的泛型类型声明。

最佳答案

Kotlin (悲伤)没有交叉路口类型

但是有Generic constraints(希望)

但是Generic constraints在辅助构造函数中不适用(悲伤)

但是您可以使用Invoke operator overloading在替代对象中模拟辅助构造函数(解决方法):

class TargetTitleEntryController {

    // ...

    companion object {

        operator fun <T> invoke(targetController: T): TargetTitleEntryController
                where T : Controller,
                      T : TargetTitleEntryControllerListener {
            return TargetTitleEntryController().apply {
                setTargetController(targetController)
            }
        }
    }
}

10-01 02:34