0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kotlin入門:データクラス

Posted at

データクラス

実際にアプリを開発する場合、データ(プロパティ)のみを扱うクラスが存在します。
これをデータクラスと言います。

データクラスは以下の条件を満たしていなければいけません。
dataキーワードをつけること
・プライマリコンストラクターが1つ以上の引数を持っていること
・コンストラクターの引数がvarまたはvalで修飾すること

またabstractopensealedinnerキーワードは使用できません

データクラスを定義することで、自動的に以下のメソッドが準備されます。
equalshashCodetoStringcomponentNcopy

equalsメソッド

「==」演算子によって内部的に呼び出されるメソッドです。
データクラスでは、プライマリコンストラクターで定義されたプロパティが等しい場合、
オブジェクト同士が同値であるとみなします。

入力例:

data class Book(var title:String = ""){
    var price = 0
}
fun main(){
    val book1 = Book("Kotlin入門")
    book1.price = 1000
    val book2 = Book("Kotlin入門")
    book2.price = 1500
    println(book1 == book2)
}

実行結果は以下の通りです。

true

toStringメソッド

インスタンスの文字列表現が要求された時に、呼び出されるメソッドです。
「クラス名(プロパティ=値)」の形式でオブジェクトの内容を出力します。

data class Book(var title:String = ""){
    var price = 0
}
fun main(){
    val book1 = Book("Kotlin入門")
    book1.price = 1000
    println(book1)
}

実行結果は以下の通りです。

Book(title=Kotlin入門)

conponentNメソッド

分割代入をした時に呼び出されるメソッドです。

data class Book(var title:String = "",var price:Int= 0){
}
fun main(){
    val book1 = Book("Kotlin入門",1000)
    val(title,price) = book1
    println(title)
}

実行結果は以下の通りです。

Kotlin入門

copyメソッド

特定のプロパティだけを変更してオブジェクトの複製を生成できます。

data class Book(var title:String = "",var price:Int= 0){
}
fun main(){
    val book1 = Book("Kotlin入門",1000)
    val copied = book1.copy(title="Kotlin上級")
    println(copied)
}

実行結果は以下の通りです。

Book(title=Kotlin上級, price=1000)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?