[Kotlin]data class/sealed class


data class


どうして書くの?

  • Javaでは、Plain Old Java Object(POJO)クラスは「旧式の単純Javaオブジェクト」を意味します.Javaが持つオブジェクト向けのメリットを高めるためには、POJOを指すべきです.
  • しかし、Javaコードの観点から見ると、ビジネスロジックを備えていないが、コード
  • が多すぎる必要がある.
    したがって,コトリンでは,これらのデータのみを処理するクラスを容易に実現するために,「dataclass」という簡単な構文を提供する.
    //이 자바코드가 아래 코틀린 한줄로 바꿀 수 있다
    public class Person {
        String name;
        int age;
        String gender;
        
        public Person(String name, int age, String gender) {
            this.name = name;
            this.age = age;
            this.gender = gender;
        }
        
        // getter & setter 생략
    }

    どう書きますか。

    data class 클래스이름(var 변수1, var변수1){}

  • 作成者、getter&setter、canonicalメソッド

  • データ・クラスを使用するには、次の制限を考慮します.
  • デフォルトジェネレータには、少なくとも1つのパラメータが必要です.
  • デフォルトジェネレータのパラメータはvalまたはvarである必要があります.
  • データクラスはabstract、open、selared、innerではありません.
  • data class Person(var name: String, var age: Int, var gender: String)

    サポート

    Canonical Methods copy메소드 디스트럭쳐링(Destructuring)

  • Canonical Methods?
    CanonicalメソッドはAnyに宣言するメソッドです(AnyはJavaのオブジェクトのようにCottinのすべてのオブジェクトの祖先です).したがって,これはコトリンのすべてのインスタンスが持つ方法を意味する.

  • コトリンのdataclassはすべての基本的な方法を正しく実現した.
  • equlas(other: Any?): Boolean-通常クラスはequals()を呼び出すとインスタンスのアドレス値を比較しますが、この方法では参照ではなくデータクラス間の値を比較します.
  • ハッシュコード():Intハッシュコードは、インスタンスの数値表現である.同じインスタンスでhashCode()を複数回呼び出す場合は、常に同じ値を返さなければなりません.equals()で比較する場合、参照を返す2つのインスタンスは同じhashCode()を持つ必要があります.
  • toString():String-通常クラスはtoString()を呼び出すとインスタンスのアドレス値を返しますが、データクラスは自動的にメンバー変数をリストする値として再定義されます.
  • copyメソッド
  • コトリンのデータクラスcopy()メソッドで必要なパラメータを上書きしてデータクラスの新しいインスタンスを作成
    すなわち、
  • のコピーであり、浅いコピーと深いコピーであっても、深いコピーに相当する.
    val student = Member("jihee", 28)
    val student1 = student.copy(name = "gilbog")  // 이름만 gilbog로 바꾸고 나이는 student에서 복사
  • 設計図
  • は、1つのインスタンスを複数の変数
  • に分離する.
    fun main (args:Array<String>) {
        val student: simple = simple("김연아", 21)
        var (name, age) = student
        name="박지성"
        println(student.name) //김연아
    }
    リファレンス
    https://readystory.tistory.com/85
    ブログの整理

    seald class


    ブログの整理