読者です 読者をやめる 読者になる 読者になる

S2AOPでエンハンスされたクラスからアノテーションを取得できた

どうも。他力本願なnobeansです。

S2AOP でエンハンスされたクラスは元のクラスのサブクラスなので,invoke.getThis().getClass().getSuperclass().getAnnotations() で取れるはずです
commentd by id:koichik

ありがとうございます!

早速試してみました。

   LOG.debug(invoke.getThis().getClass().getSuperclass());
   →java.lang.Object

????
Object?行き過ぎ行き過ぎ。

と軽くショックを受けて気がつきました。
これ(hoge.Hoge)って、Interfaceだった...。

ということで

    for (Class clazz: invoke.getThis().getClass().getInterfaces()) {
        LOG.debug(clazz);
        LOG.debug(Arrays.asList(clazz.getAnnotations()));
    }

としてみるとおかげさまで無事にアノテーションが取れました。

つまり、インタフェースもスーパクラスも全部チェックしてあげないと、全部のアノテーションは拾えないわけですね。