【发布时间】:2020-02-12 07:12:56
【问题描述】:
是否可以使用 Kotlin 泛型 where 子句作为属性的返回类型?
如果有,怎么做?
我已将它用于返回类型的函数,但似乎无法让它用于属性,这让我认为它不适用于属性。
我需要这个,因为我有多个层次结构,我的对象的属性必须实现。我在类扩展/实现子句中使用<interface> by <class> 委托组合来实现它们。
问题是我想将实现类的有限 API 暴露给某些代码(而不是完整的 API),我想通过有限的接口来做到这一点。唯一的问题是,虽然我可以对实际的object:s 使用委托组合,但我似乎不能只将它用于接口。
【问题讨论】:
-
你能详细解释一下吗?我不明白一个属性需要定义一个类型有什么意义,因为你从来没有将东西传递给一个 getter,如果你有一个泛型参数,你把类型定义放在类行中。
-
@Bananon:这不适用于我的用例,因为我不需要
where为了泛型,我想要它以便我可以创建一个没有显式接口的类型继承自多种其他类型。 -
@XDR 抱歉让您误会了。我发布了一个答案,解释了何时可以使用泛型类型作为属性的返回类型。
标签: generics kotlin properties