即使我实现了hashCode(),equals()和toString(),我应该使用数据类吗?

我有一个类是一个字符串的解析结果,所以我必须执行toString()返回该源字符串,而不是那些分析的值。 它也有自定义的equals()/ hashCode()机制。 把它标记为数据类还有什么好处吗?

  • java.lang.IllegalStateException:Dex存档:仅为.CLASS文件设置.DEX扩展名
  • Kotlin:需要编程Kotlin数据类?
  • ErrorPageFilter - 无法转发到错误页面的请求
  • 我们可以使用KOTLIN自动化rest服务
  • 继承内部java类的问题
  • 在lite模式下的MapView在onSaveInstanceState调用时崩溃
  • 在Gradle usin Kotlin中构建JAXB类
  • 为什么使用双冒号(::)在Kotlin上课?
  • One Solution collect form web for “即使我实现了hashCode(),equals()和toString(),我应该使用数据类吗?”

    自动生成的数据类的部分是:

    编译器会自动从主构造函数中声明的所有属性中派生下列成员:

    - 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) { ... }

    但是,数据类不能被继承 。 (你可以定义一个扩展另一个非数据类的数据类。)

    如果你认为有些类可能会扩展你的类,那么不要把它作为一个数据类。

    如果你认为将来没有类会扩展你的类,你可能需要销毁或copy()函数,然后把它作为一个数据类。

    Kotlin language will be the best programming language for Android.