我有一个类,它是字符串的解析结果,因此我必须强制执行toString()以返回该源字符串而不是那些已解析的值.它还具有自定义equals()/ hashCode()机制.将其标记为数据类还有什么好处?
自动生成的数据类部分是:
编译器自动从主构造函数中声明的所有属性派生以下成员:
Run Code Online (Sandbox Code Playgroud)- equals()/hashCode() pair, - toString() of the form "User(name=John, age=42)", - componentN() functions corresponding to the properties in their order of declaration, - copy() function.如果这些函数中的任何一个在类体中显式定义或从基类型继承,则不会生成它们.
该componentN()功能可以实现解密for ((a, b, c) in dataClass) { ... }
但是,不能继承数据类.(您可以定义一个扩展另一个非数据类的数据类.)
如果您认为某些类可能扩展您的类,那么请不要将其作为数据类.
如果您认为将来没有类会扩展您的类,并且您可能需要destroy或copy()函数,那么将其设为数据类.
| 归档时间: |
|
| 查看次数: |
321 次 |
| 最近记录: |