具有附加属性的Kotlin数据类不在构造函数中

Gid*_*oon 0 kotlin data-class

从Kotlin开始,想要创建一个数据类

data class Person(val Email: String, val firstName: String, val lastName: String)
Run Code Online (Sandbox Code Playgroud)

但是,假设我要添加在我使用构造函数时不知道的其他属性,但是我想在以后知道例如某人的心情时存储此数据(表示为串)

在Java中,我将创建这样的数据类。我将不能将其包含在构造函数中,并在以后可以设置它的地方做一个吸气剂。

public class Person{

     private String email;
     private String firstName;
     private String lastName;
     private String mood;

     public person (String email, String firstName, String lastName){
      this.email = email;
      this.firstName = firstName;
      this.lastName = lastName;
    } 

    public setMood(String mood){
     this.mood = mood;
    }
}
Run Code Online (Sandbox Code Playgroud)

Kotlin似乎对此没有答案,或者如果我不知道如何正确表达。因此,为什么这个问题已经可以回答,而我却找不到。

我确实了解到,通过不在数据类行中包含情绪,Kotlin可能无法将情绪识别为数据类的一部分,但是除了将其包含在构造函数中并将其设置为null之外,我不确定是否还要做什么或那是我应该做的吗?

Tod*_*odd 6

您应该可以将其作为属性添加到中Person。在Kotlin中,数据类仍然是一个类,它只是带有一些附加功能(toString,副本构造函数,hashCode /等号等)。您仍然可以定义所需的任何属性。

data class Person(val Email: String, val firstName: String, val lastName: String) {
    var mood: String? = null
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它是可以为空的,因为如您所说,您可能直到稍后才知道心情。