絵描きエンジニアの日常スマートフォン用の表示で見る絵描きエンジニアの日常この広告は、90日以上更新していないブログに表示しています。Javaのライブラリやフレームワークで登場するアノテーションは、メソッドやフィールドにつけるだけで値が勝手に入ってきたりして魔法のように思うかもしれません。ClientのライブラリであるRetrofitを題材にアノテーションがどのように使われているか調べてみましょう。Retrofitのざっくりした動きドキュメントのサンプルからコードを引用します。ライブラリの利用者はGitHubのAPIを叩くインターフェースを用意します。retrofit.create(GitHubService.class);以下のようにGitHubServiceのメソッドを呼び出すとなんとAPIを叩いて結果を返してくれます。SEのクラスなのでProxyクラスのJavadocを読んでみましょう。)Proxyクラスはプロキシクラスというインターフェースのインスタンスのように振る舞うインスタンスを作るメソッドを提供しています。第二引数のインターフェースを実装したプロキシクラスを作り、プロキシクラスのメソッドが呼び出されると第三引数のInvocationHandlerのinvokeメソッドが呼び出されます。InvocationHandler#invokeにはプロキシクラスのインスタンス、呼び出されたMethod、メソッドに渡された引数が与えられるので、リフレクションを駆使しつつ処理を行い結果をreturnすればRetrofitの完成という仕掛けでした。その他のアノテーションが使われる場面アノテーションは今回のようなリフレクションで使われるだけでなく、アノテーションプロセッシングというコンパイル時にコードを生成する仕組みでも利用されます。代表的なライブラリだとLombokやDomaなどが有名だと思います。アノテーションプロセッシングはリフレクションと違ってコンパイル時に処理するためエラーをより早いタイミングで警告することができるメリットがあります。おわりにRetrofitを通じて魔法のようなアノテーションの裏側の仕組みの理解が進むと嬉しいです。Frameworkと次世代データ処理基盤技術」です。2日目kubernetesに入門してみる見積もりの差分から議論したいね月別アーカイブはてなブログをはじめよう!orekyuuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。