在我正在使用的遗留代码中,我发现了以下内容:
@Autowired
final lateinit var controller: CustomController这个final关键字在这里意味着什么?
在Kotlin文档中,我发现了关于final关键字的简短描述,即开放类中的阻塞重写方法,但没有关于字段的信息。另外,我发现行所在的类是不打开的。
发布于 2020-10-19 07:43:37
Kotlin中的final属性或方法可以防止重写字段/方法。尽管如此,Kotlin默认认为一个属性或方法/函数是最终的,除非由关键字open指定。在您的例子中,最后一个关键字是多余的。
这里有一个小的演示测试用例来说明同样的情况。
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
}OOP中有一个名为脆弱基类的有趣问题,以及为什么某些语言(如Kotlin )默认选择final。
https://stackoverflow.com/questions/64422637
复制相似问题