在Kotlin的构造函数中为参数添加一个私有修饰符有什么不同?
我不确定Kotlin编写的以下两个构造函数的区别
class ConcreteItem(val title: String) : Item() { }
和
class ConcreteItem(private val title: String) : Item() { }
正如你所看到的,唯一的区别是标题字段之前的“私人”修饰符。 它将如何影响标题领域的范围?
以下代码:
class ConcreteItem(val title: String) : Item() { }
是一个捷径:
class ConcreteItem(title: String) : Item() { val title: String = title }
val title
缺少显式访问修饰符意味着public
:
class ConcreteItem(title: String) : Item() { public val title: String = title }
同样,下面的代码:
class ConcreteItem(private val title: String) : Item() { }
是一个捷径:
class ConcreteItem(title: String) : Item() { private val title: String = title }
考虑到这一点,两个声明之间的区别只是宣布公共财产与私人财产。
如果应用private
修饰语,则不会合成公共的“getter”,从而其他类可以询问“title”的值。 否则会。
您几乎总是希望您的构造函数参数可用于该类中的所有代码。 这将是从构造函数参数中创建私有成员variables的惯用方法。
class ConcreteItem(private val title: String) {}
如果你类似于Java,那就意味着:
class ConcreteItem { private final String title; public ConcreteItem(final String title) { this.title = title; } }
- 设置一个字段的值,而不用调用set方法 – Kotlin
- 为什么在类路径中有不同版本的Kotlin JAR?
- 函数在kotlin返回值结束之前Fuel.post
- 内联setter或不在Kotlin中创建未使用的setter?
- 如何在Kotlin中实例化一个抽象类?
- 无法分析:org.jetbrains.kotlin.kapt3.diagnostic.KaptError:批注处理时出错
- 为什么json字符串为空时,我将一个内部对象传递给Gson()。toJson(object)in Kotlin?
- Android Studio 3.0未解决的参考:SupportedLanguages for AIConfiguration类在Dialogflow(api.ai)
- 在FacebookLogin中使用kotlin时,“未解决的参考”背后的原因是什么?