Kotlin-数据类

本文详细介绍了Kotlin中的数据类,包括它的声明条件、对象复制功能及其浅拷贝特性,以及数据的解构。数据类提供自动生成的equals(), hashCode(), toString(), componentN() 和 copy()等函数。copy()函数用于对象的浅拷贝,对基本类型进行深拷贝,而引用类型则保持引用。此外,解构声明借助componentN()函数允许方便地访问数据类的属性。" 86364627,8054278,顺时针打印矩阵的Python解决方案,"['剑指Offer', 'Python编程', '数据结构', '算法', '矩阵操作']
摘要由CSDN通过智能技术生成

概述

在开发过程中,经常会创建一些数据里,其没有任何逻辑功能,仅仅来用来保存数据。在Kolin中,将这些类统一称为数据类,用关键字data标记。

data class User(val name: String, val age: Int)

编译器会根据主构造器中声明的全部属性, 自动推断产生以下成员函数:

  • equals()/hashCode()函数对,
  • toString() 函数, 输出格式为 “User(name=John, age=42)” ,
  • componentN() 函数群, 这些函数与类的属性对应, 函数名中的数字 1 到 N, 与属性的声明顺序一致,
  • copy() 函数

如果在该数据类或者基类中重写了以上某个成员函数,将不会再自动推断,以重写的为准。

数据类的声明条件

  • 主构造器至少要有一个参数;
  • 主构造器的所有参数必须标记为 val 或 var ;
  • 数据类不能是抽象类、open 类、封闭(sealed)类、或内部(inner)类;
  • 数据类不能继承自任何其他类(但可以实现接口);

如果数据类有无参构造函数,需将主构造函数中,将成员属性初始化。

data class User(val name: String = "", val age: Int = 0)

对象复制

之前提到,JVM会自动为一个数据类生成copy()函数。copy()到底用来干啥的?copy()是对对象的浅拷贝还是深拷贝?带着这些疑问往下看。

data class Person(va
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值