enumの要素に付与されたアノテーションの取得

enumの要素に付与されたアノテーションをプログラムから取得する方法。

例えば次のようなenumがあるとして、

public enum Framework {
    @Skirnir
    YMIR,

    @Skirnir
    T2,

    CUBBY;
}

要素「YMIR」に付与されたアノテーションを取得する場合、つい

Skirnir annotation = Framework.class.getAnnotation(Skirnir.class);

とやってしまいがちだが、これだとenumのクラスに付与されたアノテーションが取れてしまう。

enumの要素は構造的にはクラスのフィールドなので、

Skirnir annotation = Framework.class.getField(Framework.YMIR.name())
        .getAnnotation(Skirnir.class);

とするのが正解。