假设我有一个界面HasId
和另一个HasResponsiblePerson
. 我现在对实现这两者的实例感兴趣。
IE
typealias AssignableEntity = HasId & HasResponsiblePerson
class Foo {
val entity: AssignableEntity
}
Run Code Online (Sandbox Code Playgroud)
但这失败了,因为
交集类型仅支持绝对不可为 null 的类型:左侧部分应该是具有可为 null 边界的类型参数
当然,我可以定义一个新接口
interface AssignableEntity: HasId, HasResponsiblePerson
Run Code Online (Sandbox Code Playgroud)
但每次遇到我感兴趣的新接口组合时,我都必须定义新接口,最终会得到大量几乎无用的接口。
有办法做我想做的事吗?
目前 Kotlin 中无法表示交集和并集类型: https ://youtrack.jetbrains.com/issue/KT-13108
正如该消息告诉您的那样,朝这个方向迈出的第一步是为了T & Any
表示绝对不可为空的类型,但它尚不适用于一般的交叉点。
同时,您可以使用专用接口、传递多个参数或返回复合类,如 @Ivo 建议的那样。
归档时间: |
|
查看次数: |
1595 次 |
最近记录: |