facebook twitter hatena line email

「Android/kotlin/基本」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(for)
(空やnull判定)
行36: 行36:
 
} else {
 
} else {
 
     Log.i("exists", "not empty")// "hoge"
 
     Log.i("exists", "not empty")// "hoge"
 +
}
 +
</pre>
 +
 +
==lateinitとは==
 +
インスタンスや変数が使われるタイミングで初期化するもの。nullが入らないように設計されたもの。DIとかでも使えそう。
 +
<pre>
 +
class MainActivity : AppCompatActivity() {
 +
    lateinit var user: User
 +
    override fun onCreate(savedInstanceState: Bundle?) {
 +
        super.onCreate(savedInstanceState)
 +
        setContentView(R.layout.activity_main)
 +
        user.name = "taro"
 +
        Log.i("MainActivity", "user.name=" + user.name)
 +
    }
 
}
 
}
 
</pre>
 
</pre>

2020年2月19日 (水) 14:47時点における版

null許可

var name: String = null // これだと入らない
var title: String? = null // ?をつけるとnullが許可される

読み込みのみ

valを使う

val description = "hoge"
description = "hoge2" // 許可されない

!!の意味

var nickname: String? = null
if (!TextUtils.isEmpty(nickname!!)) {
    Log.i("test", nickname)
}

nullが入ってたときにkotlin.KotlinNullPointerExceptionを発生させる。

nullじゃない時の値

text1.setText(name ?: "hello");

Int // 数字
String // 文字
Boolean // 真偽
Array<String> // 文字配列
Unit // voidみたいなもの、Unitは省略可能

空やnull判定

var name: String? = null
if (TextUtils.isEmpty(name)) {
    Log.i("exists", "empty") // "", null
} else {
    Log.i("exists", "not empty")// "hoge"
}

lateinitとは

インスタンスや変数が使われるタイミングで初期化するもの。nullが入らないように設計されたもの。DIとかでも使えそう。

class MainActivity : AppCompatActivity() {
    lateinit var user: User
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        user.name = "taro"
        Log.i("MainActivity", "user.name=" + user.name)
    }
}