【Kotlin練習問題】データクラス
データクラスとは
ある特定のデータを保持するためのクラスを作りたいということはよくありますよね。
Kotlinではそういったクラスはデータクラスと呼ばれ、クラス宣言の前にdataとつけることによって、データクラスにすることができます。
data class Car(val type: String, val number: Int)
データクラスにするメリットは一般的にデータを保持しているクラスに対して使われるメソッドが自動で生成されるという点です。自動で生成されるメソッドは以下になります。
- equalsとhashCode()
- toString() ”Car(type=super car, number=4254)”のような形式になります。
- componentN() Nの部分はクラス宣言時のプロパティの順番に対応しています。以下のように使うことができます。
val type = car.component1()
val number = car.component2() - copy()
問題
以下のJavaコードをKotlinコードに書き換えてください。
Javaコード
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Kotlinコード
class Person
fun getPeople(): List<Person> {
return listOf(Person("Alice", 29), Person("Bob", 31))
}
fun comparePeople(): Boolean {
val p1 = Person("Alice", 29)
val p2 = Person("Alice", 29)
return p1 == p2 // trueになるようにしてください。
}
Kotlin Playgroundでコードの編集・動作確認ができます。
[expander_maker id=”1″ more=”ヒント” less=”非表示”]ヒント
Kotlinにおけるクラス宣言の形式は以下のようになります。
class クラス名(パラーメーター){ /*…*/ }
パラメーターの中は(val type :String)など、(名前: 型)の形式で表されます。
例)
class Car(val type: String){}
[/expander_maker]
[expander_maker id=”1″ more=”答え” less=”非表示”]
答え
data class Person(val name: String, val age: Int)
fun getPeople(): List<Person> {
return listOf(Person("Alice", 29), Person("Bob", 31))
}
fun comparePeople(): Boolean {
val p1 = Person("Alice", 29)
val p2 = Person("Alice", 29)
return p1 == p2 // trueになるようにしてください。
}
[解説]
data修飾子をclassの前につけることで、パラメーターの中身が自動でクラスメンバになり、上記で紹介したメソッドも使えるようになっています。
dataを無くすとコンパイルエラーがおこることを確認してください。
[/expander_maker]その他の問題はこちらからどうぞ。
完全無料で通えるプログラミングスクール
プログラミング学習はどうしても一人だとつまづいてしまう時がきます。調べればわかることも少なくないですが、最初のうちは調べ方もわからないことが多いため、あまり効率的ではありません。
効率的かつ挫折せずにプログラミングを学習したい方はスクールを検討してみるのも一つの手です。
中には無料で通えるスクールや、就職保証をしてくれるスクールなどもあるので、きっとあなたの目的に応じて最適のスクールが見つかります!以下の記事で評判がよく特におすすめのスクールをいくつかピックアップしているので、スクール選びで後悔したくない方は御覧ください!
おすすめ書籍
Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。
[itemlink post_id=”1743″]実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。
[itemlink post_id=”1745″]