Android開発でアダプターやダイアログを実装している時にrequireNotNull()を使用するよりも適切な関数を教えていただいたので、そちらをメモします。
requireNotNull
requireNotNull
はKotlin標準ライブラリに用意されている関数で、nullチェックを簡潔に行うために使用されます。
- 引数が
null
であればIllegalArgumentException
をスローする -
null
でなければその値をそのまま返す
val safeValue = requireNotNull(value) { "title is required" }
requireArguments()
requireArguments
はAndroidのFragment
クラスに用意されている関数で、arguments
が null でないことを保証するために使用されます。
-
arguments
がnullの場合はIllegalStateException
をスローする - nullでなければそのまま返す
val title = requireArguments().getString("title")
requireContext()
requireContext()
はFragmentがContextにアタッチされていることを前提として、Contextを返すメソッドです。
- Fragment の
context
プロパティは nullable(Context?) - nullだった場合(未アタッチ状態)は
IllegalStateException
をスローする
// SharedPreferences を取得する
val prefs = PreferenceManager.getDefaultSharedPreferences(requireContext())
// Toast を表示する
Toast.makeText(requireContext(), "Hello!", Toast.LENGTH_SHORT).show()
requireNotNullの場合だとエラーが起きた時にIllegalArgumentExceptionとなり、どこで問題が起きたか曖昧だが、requireArgumentsやrequireContextだとエラーが明確に分かります。requireNotNull() は汎用的すぎるため、argumentsやcontextを取得する場合は適切な関数を使用します。