Kotlin中的这些类之间有什么区别?

时间:2018-12-14 16:13:40

标签: class kotlin

我是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?

1 个答案:

答案 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编译器完成的手工工作。