Existe uma maneira de declarar um atributo de anotação para * any * enum?

No momento, estou desenvolvendo uma estrutura de ligação baseada em anotação para Java Swing que usaLigação de JGoodies sob o capô. Infelizmente eu estou preso com uma anotação para uma ligação JRadioButton. O que eu quero fazer é especificar um nome de propriedade de um modelo que contém um valor especial (enum). O botão de rádio deve ser selecionado se esta propriedade tiver um valor específico. Agora eu quero especificar o valor na anotação assim:

<code>@RadioButtonBinding(property = "selectedItem", selectedValue = MyEnum.FIRST)
JRadioButton firstButton

@RadioButtonBinding(property = "selectedItem", selectedValue = MyEnum.SECOND)
JRadioButton secondButton
</code>

No entanto, eu não sei como declarar a anotação para permitir o acima equalquer outro enum também. Meu primeiro palpite foi esse, mas aprendi que os atributos de anotação não podem ser genéricos:

<code>@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface RadioButtonBinding {

    /** The model-property to which the selected value is bound */
    String property();

    // Idea 1: Specifying the enum class and the enum constant as String - works but is not typesafe

    Class<? extends Enum<?>> enumClass();

    String enumConstantName();

    // Idea 2: Directly specifying the enum constant - gives a compile-time error

    <T extends Enum<T>> T enumValue();

}
</code>

Alguma idéia de como resolver isso?

questionAnswers(3)

yourAnswerToTheQuestion