Help us understand the problem. What is going on with this article?

Androidのコードを 見やすく! 書きやすく! するアノテーション その2

More than 3 years have passed since last update.

Android開発をするときに使うと便利なアノテーションのまとめです。
以前投稿させていただいた Androidのコードを 見やすく! 書きやすく! するアノテーション が存外好評でしたので、第2弾を書かせていただきます。
私もまだまだ勉強中ですが、便利なものはガンガン使って、効率よく開発したいものです。

メソッドの引数に渡す値の範囲を明示する

@Size @IntRange @FloatRange
値の範囲を絞ることができます。
メソッドの引数に@IntRangeを付与した場合、受け取る値をここで指定した範囲に絞ることができます。
呼び出し側でこの範囲外の値を渡そうとした場合エラーが表示されるようになります。
intRange1.png
また、メソッドに@IntRangeを付与した場合には、戻り値を指定した範囲内に限定することができます。
retrun句で範囲外の値を返そうとした場合にエラーが表示されるようになります。
intRange2.png
また、@Sizeを使うと、Stringの文字列長を指定したり、
size1.png
配列の長さを指定することができます。
size2.png

引数にカラーコード整数を明示する

@ColorInt
色情報を整数で渡すことを明示できます。
リソースIDではないことを明示するもので、リソースID以外のintは通してしまうため、@ColorRes(前回紹介)と対で使うとよさそうです。
こちらを指定した場合、リソースIDを渡そうとするとエラーが表示されるようになります。
colorInt.png

メソッドの実行スレッドを明示する

@UiThread @MainThread @WorkerThread @BinderThread
メソッドの実行されるスレッドを明示することができます。
Androidの実装では、描画処理や通信処理などスレッドを意識して実装しなければなりませんが、このアノテーションを使うことでIDE上でエラーを表示してくれるようになります。
例えば、@UiThreadを付けたメソッドはUIスレッド以外で呼び出そうとした場合エラーが表示されるようになります。
uiThread.png
また、@WorkerThreadを付けたメソッド内でUI処理を行おうとするとエラーが表示されるようになります。
workerThread.png

値がNullになる可能性を明示する

@Nullable
メソッドの引数にNullが来る可能性があることを明示的に指示します。
これを指定していると、この値を使おうとした場合にNullである可能性がある警告が表示されるようになります。
nullAble1.png
また、メソッドに@Nullableを付与した場合、呼び出し側に戻り値がNullである可能性があることを明示的に知らせることができます。
呼び出し側が、このメソッドからの戻り値を使用する場合にNullの可能性がある警告が表示されるようになります。
nullAble2.png

メソッドがオーバーライドされた場合にsuperを呼ぶ必要があることを明示する

@CallSuper
継承されたクラスで@CallSuperを指定したメソッドをオーバーライドした場合superを呼ぶことを義務付けることができます。
オーバーライドしたメソッドでsuperを呼んでいないとエラーが表示されるようになります。
callSuper1.png
callSuper2.png

メソッドの戻り値を使用することを義務付ける

@CheckResult
メソッドに@CheckResultを付与することで、呼び出し元が戻り値を使用することを義務付けることができます。
呼び出しもとで戻り値を使っていない場合にエラーが表示されるようになります。
checkResult1.png
また、戻り値を使わない場合には同様のほかのメソッドを呼び出すべきであるならば、そちらに誘導することもできます。
checkResult2.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away