Description
Rewrite the following Java code to Kotlin:
次のJavaコードをKotlinに書き換えてください。
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;
}
}
Then add a modifier
data
to the resulting class. This annotation means the compiler will generate a bunch of useful methods in this class:equals
/hashCode
,toString
and some others. ThegetPeople
function should start to compile.Read about classes, properties and data classes.
次に、結果のクラスに
data
修飾子を追加してください。これは、コンパイラがequals
/hashCode
,toString
などの多くの有用なメソッドを生成することを表します。getPeople
関数のコンパイルが通るはずです。
Code
data class Person(val name: String, val age: Int)
fun getPeople(): List<Person> {
return listOf(Person("Alice", 29), Person("Bob", 31))
}
Memo
- dataクラス
- Kotlinではデータを保持するためだけのクラスを、
date
修飾子でマークできる - dataクラスには、プライマリコンストラクタで宣言されたすべてのプロパティから以下のメンバを自動的に派生される(明示的な実装がある場合は、関数は生成されずに既存の実装が使用される)
equals()
... dataクラスのオブジェクトを比較するhashCode()
... dataクラスのオブジェクトのハッシュコードを返すtoString()
..."User(name=John, age=42)"
形式の文字列を返すcomponentN()
... 宣言がN番目のcomponentを返すcopy()
... dataクラスのオブジェクトをコピーする。一部のプロパティだけ変更してコピーする必要がある場合に便利
- Kotlinではデータを保持するためだけのクラスを、
通常クラスとdataクラスの実装の違いには意識しておく必要がある。
参考