gpt4 book ai didi

kotlin - 为什么 Kotlin 接口(interface)是 "not open"?

转载 作者:行者123 更新时间:2023-12-03 16:31:41 26 4
gpt4 key购买 nike

在 Kotlin 1.4.30 中,当我输入

open interface I
Kotlin 编译器警告我 modifier 'open' is redundant for 'interface' .这是完全有道理的:接口(interface)当然是开放的,否则它们将毫无用处。
然而,反射库似乎与此相矛盾:
interface I
println(I::class.isOpen) // prints 'false'
这有什么意义? KDoc of isOpen 非常简短:

true if this class is open.


Kotlin 中“开放”的具体定义是什么?
我认为这意味着“对被该文件之外的类进行子类型化的可能性开放”。

最佳答案

方法isFinal , isOpen , isAbstract , isSealed被设计成只有其中一个对所有 KClass 都返回 true实例。
来源:this comment in KT-19850 .
由于接口(interface)是抽象的,I::class.isAbstract == true .结合以上设计目标,I::class.isOpen == false结果。
请点赞KT-19850帮助解决这种令人惊讶的行为。

关于kotlin - 为什么 Kotlin 接口(interface)是 "not open"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66386748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com