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属性。