Android開発をするときに使うと便利なアノテーションのまとめです。
以前投稿させていただいた Androidのコードを 見やすく! 書きやすく! するアノテーション が存外好評でしたので、第2弾を書かせていただきます。
私もまだまだ勉強中ですが、便利なものはガンガン使って、効率よく開発したいものです。
メソッドの引数に渡す値の範囲を明示する
@Size
@IntRange
@FloatRange
値の範囲を絞ることができます。
メソッドの引数に@IntRange
を付与した場合、受け取る値をここで指定した範囲に絞ることができます。
呼び出し側でこの範囲外の値を渡そうとした場合エラーが表示されるようになります。
また、メソッドに@IntRange
を付与した場合には、戻り値を指定した範囲内に限定することができます。
retrun句で範囲外の値を返そうとした場合にエラーが表示されるようになります。
また、@Size
を使うと、Stringの文字列長を指定したり、
配列の長さを指定することができます。
引数にカラーコード整数を明示する
@ColorInt
色情報を整数で渡すことを明示できます。
リソースIDではないことを明示するもので、リソースID以外のintは通してしまうため、@ColorRes
(前回紹介)と対で使うとよさそうです。
こちらを指定した場合、リソースIDを渡そうとするとエラーが表示されるようになります。
メソッドの実行スレッドを明示する
@UiThread
@MainThread
@WorkerThread
@BinderThread
メソッドの実行されるスレッドを明示することができます。
Androidの実装では、描画処理や通信処理などスレッドを意識して実装しなければなりませんが、このアノテーションを使うことでIDE上でエラーを表示してくれるようになります。
例えば、@UiThread
を付けたメソッドはUIスレッド以外で呼び出そうとした場合エラーが表示されるようになります。
また、@WorkerThread
を付けたメソッド内でUI処理を行おうとするとエラーが表示されるようになります。
値がNullになる可能性を明示する
@Nullable
メソッドの引数にNullが来る可能性があることを明示的に指示します。
これを指定していると、この値を使おうとした場合にNullである可能性がある警告が表示されるようになります。
また、メソッドに@Nullable
を付与した場合、呼び出し側に戻り値がNullである可能性があることを明示的に知らせることができます。
呼び出し側が、このメソッドからの戻り値を使用する場合にNullの可能性がある警告が表示されるようになります。
#メソッドがオーバーライドされた場合にsuperを呼ぶ必要があることを明示する
@CallSuper
継承されたクラスで@CallSuper
を指定したメソッドをオーバーライドした場合superを呼ぶことを義務付けることができます。
オーバーライドしたメソッドでsuperを呼んでいないとエラーが表示されるようになります。
メソッドの戻り値を使用することを義務付ける
@CheckResult
メソッドに@CheckResult
を付与することで、呼び出し元が戻り値を使用することを義務付けることができます。
呼び出しもとで戻り値を使っていない場合にエラーが表示されるようになります。
また、戻り値を使わない場合には同様のほかのメソッドを呼び出すべきであるならば、そちらに誘導することもできます。