wst*_*wst 6 immutability kotlin
最近IntelliJ建议添加final到其中一个val属性.此特定属性已在init {}块中初始化.我试图找出final val构造的语义是什么,何时应该使用它,但Kotlin是关于不变性的,如何在Java中val等效,final因此结果如此嘈杂,我找不到任何东西.
例:
final val id: Int // `final` suggested by IDE
init { id = 1 }
Run Code Online (Sandbox Code Playgroud)
类似财产的含义和可能用途是什么?通过应用final它所暗示的超越不可变性的限制,这是已知的?它与继承或外部访问有什么关系吗?
final如果财产是,IntelliJ停止了sugessting private.
zsm*_*b13 12
这个例子不应该建议添加,final因为它在这种情况下什么都不做.final在Kotlin 中添加有意义的唯一地方就是覆盖成员.通过添加final到重写的属性(或方法),您可以防止子类进一步覆盖它.
例如:
open class A {
open val x: Int = 0
}
open class B : A() {
final override val x: Int = 25
}
class C : B() {
override val x: Int = 56 // Error: `x` in `B` is final and cannot be overridden
}
Run Code Online (Sandbox Code Playgroud)
final如果符合以下条件,关键字不适用:
open,open,private.