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?