ひがやすを技術ブログ

電通国際情報サービスのプログラマ

AnnotationとGenerics


Component component = Foo.class.getAnnotation(Component.class);
はOKだけど。

Class clazz = Foo.class;
Component component = clazz.getAnnotation(Component.class);
はNG。

Component component = (Component) clazz.getAnnotation(Component.class);
とキャストする必要がある。気持ちはわかるけど、DIコンテナのようにクラス名がリテラルで記述できない場合は困るじゃないの!!!


追記:
NoInject noInject = method.getAnnotation(NoInject.class);
はできるじゃん。何でクラスでできんのじゃEclipseNetBeansだとどぉ? -> きしださん


さらに追記:
アドバイスどおり

Component component =
clazz.getAnnotation(Component.class);
で無事うまくいきました。ありがとうございました。キャストと変わらないように見えるのは、きっと気のせいですね。(笑)