拡張プロパティ
3-③
Kotlinはクラスにプロパティを定義すると、
内部的にアクセサメソッドを⽣成する
class User {
var name: String = ""
}
val user = User()
user.name = "takehata"
user.name
プロパティの値はアクセサメソッド経由で呼ばれる
Slide 109
Slide 109 text
・プロパティに拡張機能を持たせられる
・上記はtotalScoreがscore1とscore2の
合計値を返却する例
val score1 = 0
val score2 = 0
val totalScore
get() = score1 + score2
Slide 110
Slide 110 text
public String getMessage() {
UserService userService = new UserService();
return userService.createMessage();
}
val message: String
get() {
val userService = UserService()
return userService.createMessage()
}
・get〜という名前の引数なしメソッドが
全てプロパティとして認識されてしまう
・なぜメソッドがプロパティに・・・と⼾惑う
Java
Kotlin
KotlinのNull安全
3-④
var user: User? = User()
user.name
Kotlinは型に?を付けるとNullを⼊れられるようになる
Null許可型のオブジェクトに直接アクセスするとコンパイルエラー
if (user != null) {
user.name
}
Nullチェックをするとアクセスできるようになる
Slide 128
Slide 128 text
!!を付けると強制的にNull不許可型に変換する
user!!.name
Slide 129
Slide 129 text
fun createUser(): User? {
// ・・・
}
val user = createUser()
user!!.name
JavaはデフォルトでNull許可型なので、変換すると?が付く
Nullチェックをしていない変数の呼び出しは、!!を付けて変換される
fun createUser(): User {
// ・・・
}
val user = createUser()
user.name
Null不許可型にして、!!も排除する