Kotlin 数据类

Kotlin 数据类,在 Kotlin 中,您可以创建一个data类来保存数据。您希望将类标记为data的原因是让编译器知道您正在创建此类来保存数据,然后编译器会自动为您的数据类创建多个函数,这将有助于管理数据。在本指南中,我们将学习数据类和编译器自动生成的函数。

数据类学生:

data class Student(val stuName: String, val stuAge: Int)

在 Kotlin 中自动生成数据类的函数

现在我只是在这里提到函数的名称,我们将在示例的帮助下看到它们中的每一个。

  1. equals()
  2. hashCode()
  3. toString()
  4. copy()
  5. componentN()

Kotlin 数据类要求

为了将类标记为数据,该类必须满足某些要求。要求如下:

  1. 数据类的主构造函数必须至少有一个参数。此外,参数标记为valvar

  2. 类不能标记为开放,抽象,密封或内部。

  3. 该类可以扩展(继承)其他类,它还可以实现其他接口。

Kotlin 数据类示例

在下面的示例中,我们有一个Student类,我们将其标记为数据类。由于我们已将此类声明为data,因此编译器已自动为此类生成了多个函数,如copy()toString()equals()等,我们将在接下来的几个示例中讨论这些函数。

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

fun main(args: Array<String>) {
    val stu = Student("Chaitanya", 31)
    val stu2 = Student("Ajeet", 30)
    println("Student Name is: {stu.name}")
    println("Student Age is:{stu.age}")
    println("Student Name is: {stu2.name}")
    println("Student Age is:{stu2.age}")
}

输出:

Kotlin 数据类

数据类hashCode()equals()方法

如果两个对象在 kotlin 中相同,那么它们具有相同的哈希码,我们可以使用hashCode()方法获得。

方法equals()返回truefalse。如果两个对象的hashCode()相等,则equals()返回true,否则返回false

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

fun main(args: Array<String>) {
    val stu = Student("Chaitanya", 31)
    val stu2 = Student("Chaitanya", 31)
    val stu3 = Student("Ajeet", 30)
    if (stu.equals(stu2) == true)
        println("stu is equal to stu2.")
    else
        println("stu is not equal to stu2.")

    if (stu.equals(stu3) == true)
        println("stu is equal to stu3.")
    else
        println("stu is not equal to stu3.")

    println("Hashcode of stu: {stu.hashCode()}")
    println("Hashcode of stu2:{stu2.hashCode()}")
    println("Hashcode of stu3: ${stu3.hashCode()}")
}

输出:

数据类hashCode和equals方法

数据类copy()方法

通过在数据类中使用copy()方法,我们可以复制其他对象的一些属性。让我们举个例子。这里我们有一个Student类的对象stu,其中包含学生"Steve"的名称,年龄和主题细节,我们创建了另一个名为"Lucy"的对象stu2并使用数据类的copy()方法,复制了stu对象的年龄和主题细节。

data class Student(val name: String, val age: Int, val sub: String)

fun main(args: Array<String>) {
    val stu = Student("Steve", 26, "Math")

    // copying the age and subject from object stu
    val stu2 = stu.copy(name = "Lucy")

    println("stu: Name {stu.name}, Age{stu.age} & Subject {stu.sub}")
    println("stu2: Name{stu2.name}, Age {stu2.age}&Subject{stu2.sub}")
}

输出:

数据类copy方法

数据类toString()方法

data类的toString()方法返回对象的String表示形式。

data class Student(val name: String, val age: Int, val sub: String)

fun main(args: Array<String>) {
    val stu = Student("Steve", 26, "Math")
    println(stu.toString())
}

输出:

Student(name=Steve, age=26, sub=Math)

数据类component()方法

数据类的componentN()方法将对象解构为多个变量。在下面的例子中,我们有一个Student类的对象stu,我们使用componentN()方法将对象解构为变量。component1()方法返回对象的第一个属性的值,component2()返回第二个属性的值,依此类推。

data class Student(val name: String, val age: Int, val sub: String)

fun main(args: Array<String>) {
    val stu = Student("Steve", 26, "Math")
    val name = stu.component1()
    val age = stu.component2()
    val sub = stu.component3()
    println("Name is: name")
    println("Age is:age")
    println("SUbject is: $sub")
}

输出:

数据类component方法

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程