在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)
}
}
}
}