我有一个委托界面:
interface Delegate {
fun didSelectWord(word: String)
}
我希望有一个名为delegate
val delegate: <T> where T : Delegate
delegate
可以是实现委托
我也试过
val delegate: Any : Delegate
但两者都给出了编译错误
答案 0 :(得分:2)
解决方案非常简单
val delegate: Delegate
现在这样的工作
interface Delegate
class Test: Delegate {
fun yourMethod() = "Your Method"
}
fun test() {
val delegate: Delegate
delegate = Test()
println(delegate)
}
如果您想使用仅存在于Test
但不在Delegate
中的功能,则必须使用
(delegate as Test).yourMethod()
否则只有Delegate
中存在的功能才能正常工作
delegate.yourMethod()
无效。
答案 1 :(得分:0)
你可以这样做:
class SomeClass<T : Delegate> {
val delegate: T = // initialize delegate ...
}
使class
成为声明类型参数T
的泛型类型。您可以创建T
类型的属性。