在我正在使用的遗留代码中,我发现了以下内容:
@Autowired
final lateinit var controller: CustomController
Run Code Online (Sandbox Code Playgroud)
这个final关键字在这里是什么意思?
在 Kotlin 文档中,我找到了关于阻止覆盖开放类中方法的final关键字的简短描述,但没有关于字段的信息。另外 - 我发现线路所在的班级没有打开
甲final属性或在科特林防止重写字段/方法的方法。话虽如此,Kotlin 默认情况下将属性或方法/函数视为最终的,除非由关键字 指定open。在您的情况下, final 关键字是多余的。
这是一个小的演示测试用例来说明相同的情况。
open class Parent {
open val someValue = 0
final val otherValue = 13 // redundant modifier 'final' warning in Android Studio
}
class Child : Parent() {
override val someValue = 5
// override val otherValue = 19 // compile error
}
Run Code Online (Sandbox Code Playgroud)
在 OOP 中有一个叫做Fragile Base Class的有趣问题,以及为什么像 Kotlin 这样的一些语言在默认情况下更喜欢 final。
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |