私は文字列の解析結果のクラスを持っているので、その解析された値の代わりにそのソース文字列を返すtoString()を強制する必要があります。それはカスタムequals()/ hashCode()メカニズムも持っています。それでもデータクラスとしてマークする利点はありますか?データクラスのhashCode()、equals()、toString()のすべてを実装してもデータクラスを使用する必要がありますか?
2
A
答えて
4
自動生成された部品は、以下のとおりです。これらの関数のいずれかがある場合
- 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) { ... }
のように構造化代入できます。しかし、別の非データクラスを拡張するデータクラスを定義することもできます。
クラスによっては、クラスを拡張する可能性があると思われる場合は、データクラスにしないでください。
将来クラスを拡張するクラスがなく、destructionまたはcopy()関数が必要な場合は、それをデータクラスにしてください。
関連する問題
- 1. JavaのDelayQueueを使用する場合、equals()およびhashCode()も実装する必要がありますか?
- 2. embeddable jpaクラスはequalsとhashCodeを実装する必要がありますか?
- 3. compareToメソッドに基づいてmy equalsとhashcodeを実装する必要がありますか?
- 4. hashCodeとequalsメソッドをcompareToメソッドでオーバーライドする必要がありますか?
- 5. いつequalsメソッドとhashcodeメソッドをオーバーライドする必要がありますか?
- 6. インタフェース内のtoString、hashcode、equalsメソッド
- 7. C#:どのようにToString()を実装する必要がありますか?
- 8. equalsをオーバーライドする必要がない場合のHashCodeのオーバーライド
- 9. Kotlin:Kotlinデータクラスを保護する必要がありますか?
- 10. 重要な情報にToStringを使用する必要がありますか?
- 11. すべての見積もりは、適合と変形を実装する必要があります
- 12. hashcode、equals、toStringメソッドのユニットテストを生成する
- 13. オーバーライドするhashcode()とequals()を計算する際に、すべてのフィールドを考慮する必要がありますか?
- 14. いつhashcodeとequalsメソッドが必要ですか?
- 15. Google Guavaを使用してequalsとhashCodeを正しく実装しましたか?
- 16. スカラーでequalsとhashCodeを実装する方法
- 17. BLLを使用してもDALにアクセスする必要がありますか?
- 18. ToString()またはGetDateTimeFormats()を使用してDateTimeをフォーマットする必要がありますか?
- 19. デフォルトのインターフェイスメソッドを実装する必要がありますか?
- 20. jpaエンティティのIdClass(合成キー)でequals()とhashCode()をオーバーライドする必要があります
- 21. すべての要素にslidetoggleを使用する必要があります
- 22. すべてのページでセッションを使用する必要がありますか?
- 23. KeyPressEventまたはQActionを使用してキーを実装する必要がありますか?
- 24. 親ビューでもonSave/restoreInstanceを実装する必要がありますか?
- 25. BackgroundWorkerを使用してイベントベースの非同期パターンを実装する必要がありますか?
- 26. 州を使用してアプリケーションのメニューと画面を実装する必要がありますか?
- 27. WCFを使用して特定のバイナリネットワークプロトコルを実装する必要がありますか?
- 28. FileNotFoundError例外を実装する必要がありますか?
- 29. リポジトリにUnitOfWorkを実装する必要がありますか?
- 30. onRetainNonConfigurationInstanceを実装する必要がありますか?
ありがとうございました。私は今それをデータクラスとしてマークすることに自信があります。どのような方法でも拡張するべきではなく、破壊を使用することができます。 – glee8e