Kotlin“任何实现接口的类型”
我有一个委托接口:
interface Delegate { fun didSelectWord(word: String) }
我想有一个名为delegate
的属性
val delegate: <T> where T : Delegate
delegate
可以是实现委托的任何东西
我也试过了
val delegate: Any : Delegate
但是都给编译错误
解决方案非常简单
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()
将不起作用。
你可以这样做:
class SomeClass<T : Delegate> { val delegate: T = // initialize delegate ... }
使class
成为声明类型参数T
的泛型类型。 你可以创建类型T
属性。