我是Kotlin的初学者! 我们可以解释一下Kotlin中这些类之间的区别吗?
class Person(val name: String, val age: Int)
class Person(name: String, age: Int)
class Person(var name: String,var age: Int)
以及如何在Kotlin中为数据类添加getter和setter?
答案 0 :(得分:5)
首先,您应该尝试阅读手册中的区别:
https://kotlinlang.org/docs/reference/data-classes.html
https://kotlinlang.org/docs/reference/classes.html
但是让我们尝试解释一下:
class Person(val name: String, val age: Int)
Kotlin编译器将为两个构造函数自变量生成存储值的对应字段,并生成尊重的getter。由于关键字val
,这些值是不可变的,因此不会有任何设置器。
class Person(name: String, age: Int)
参数仅传递给构造函数,而不存储为字段。因此,也将没有吸气剂和吸气剂。
class Person(var name: String, var age: Int)
与第一个示例一样,值存储在生成的字段中。但是由于关键字var
,这些值是可变的,因此编译器将生成getter和setter。
data
是附加的(可选)关键字,位于class
声明的前面。除了获取器和设置器之外,这还将生成一个toString
方法,该方法打印带有其名称的所有属性的值,并生成一个hashCode
方法,将每个值都考虑在内。当为data
类生成getter和setter时,您无需手动添加它们。
Kotlin致力于减少由Java开发人员完成的由Kotlin编译器完成的手工工作。