假设我有一个API,它将向我返回有关用户信息的响应:
在普通类中,我将创建一个UserInfo类:
class UserInfo (val username:String, val age:String)
但是我发现很多人建议它应该是一个数据类(其中有些人建议必须):
data class UserInfo (val username:String, val age:String)
AFAIK,无论UserInfo是否为数据类,默认情况下都是公共最终,它会自动生成属性的吸气剂功能,这些属性也公共最终默认情况下,属性不能分配任何值。
我知道数据类自动生成/覆盖有用的功能,例如 copy(), toString()和 equals( )。如果我只需要获取UserInfo类的名称和年龄值,而无需比较UserInfo的相等性,是否还需要将其声明为数据类?
答案 0 :(得分:0)
根据您提供的上下文,应将UserInfo
类声明为数据类。
数据类的作用是仅保存表示该结构所需的数据,而没有任何行为,而这正是UserInfo
所拥有的,您只想保存该数据。这并不意味着您有义务使用数据类,但这会更有意义。
答案 1 :(得分:0)
我也建议使用数据类。
如果没有正确指定hashCode
和equals
,就无法安全地在集合中使用UserInfo
。