class - Kotlin 中的这些类有什么区别?

标签 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?

最佳答案

首先你应该尝试阅读手册中的区别:

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,这些值是不可变的,因此不会有任何 setter。

class Person(name: String, age: Int)

参数仅传递给构造函数,但不存储为字段。所以也不会有 getter 和 setter。

class Person(var name: String, var age: Int)

与第一个示例一样,值存储在生成的字段中。但是由于关键字 var,这些值是可变的,因此编译器将生成 getter 和 setter。

data 是放在 class 声明前面的附加(可选)关键字。除了 getter 和 setter 之外,这将生成一个 toString 方法打印所有属性的值及其名称和一个 hashCode 方法将每个值都考虑在内。由于为 data 类生成了 getter 和 setter,因此您无需手动添加它们。

Kotlin 在很大程度上减少了 Java 开发人员需要完成的手动工作,这些工作由 Kotlin 的编译器完成。

关于class - Kotlin 中的这些类有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53783311/

相关文章:

java - 整数不是Java中的对象,仅仅因为它们不是类的实例?

python - 在Python中扩展现有的类实例

java - 在单独的类 Java 中调用时 ArrayList 为空

java - 具有 O(log(N)) 时间复杂度操作的 HashMap

regex - 正则表达式不允许连续字符无空格

Android 一个 Activity 和多个带有新架构组件的 fragment

java - 父类初始化时创建子类对象

php - 是否可以在 PHP 中动态定义类属性值?

android - kapt 发生异常 : java. lang.OutOfMemoryError: 超出 GC 开销限制

kotlin - Kotlin Cinterops native 库名称