[kotlin]データクラス(dataclass)
データクラスとは
データクラスの概念はJavaのDTOと同じです
🟤 JavaのDTO
public class User() {
String id;
int age;
public User(String id, int age) {
this.id = id;
this.age = age;
}
//getter & setter 생략
}
このクラスは、データを受信または応答するクラスにすぎません.
コードが多すぎますが、コトリンでは簡単に作成できます.
🟣 コートリンでのDTO(dataclass)
data class User(var Id: String, var Password String)
ジェネレータからgetter、setter、canonical methodsまで、対応するローが自動的に生成されます.
これらのデータ・クラスを宣言する条件はいくつかあります.
public class User() {
String id;
int age;
public User(String id, int age) {
this.id = id;
this.age = age;
}
//getter & setter 생략
}
data class User(var Id: String, var Password String)
⚙ Canonical Methods
CanonicalメソッドはAnyに宣言するメソッドです.
(AnyがJavaのオブジェクトであるように、コトリンのすべてのオブジェクトの親です.)
コートリンのdataclassは、以下に示すように、すべてのCanonicalメソッドを実現しています.
🔍 copy()メソッド
コトリンのデータクラスはcopy()メソッドも提供し,このメソッドは
上書きを使用すると、データ・クラスの新しいインスタンスを作成できます.
新しいインスタンスを作成するのは、深度コピーと言えるでしょう.
JavaからDTOオブジェクトを深くコピーするには、複数の操作が必要です.
コトリンはcopy()メソッドで、簡単に深さのコピーができます!
val oldUser = User("jeongho", 22)
val newUser = oldUser.copy(id = "newJeongho") // 이름만 변경되고 나이는 oldUser에서 복사
📰 分解加工設計
コートリンはDistrict Picturingを提供します.Distributionのため、以下のようになります.
データ・オブジェクトからデータを抽出するには、何の操作も必要ありません.
val user: User = User("jeongho", 22)
val (id, age) = user
場合によっては、未使用の値を下線()で置き換えることができます.val (id, _) = user
Reference
この問題について([kotlin]データクラス(dataclass)), 我々は、より多くの情報をここで見つけました https://velog.io/@usa_dev/kotlinテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol