В настоящее время я разрабатываю привязку на основе аннотаций для Java Swing, которая использует JGoodies Binding под капотом. К сожалению, я застрял в аннотации для привязки JRadioButton. Я хочу указать свойство-имя модели, которая содержит специальное значение (перечисление). Радиокнопка должна быть выбрана, если это свойство имеет определенное значение. Теперь я хочу указать значение в аннотации следующим образом:
@RadioButtonBinding(property = "selectedItem", selectedValue = MyEnum.FIRST)
JRadioButton firstButton
@RadioButtonBinding(property = "selectedItem", selectedValue = MyEnum.SECOND)
JRadioButton secondButton
Однако я не знаю, как объявить аннотацию, чтобы разрешить вышеупомянутое и любое другое перечисление. Мое первое предположение было это, но я узнал, что атрибуты аннотации не могут быть общими:
@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();
}
Есть идеи, как это решить?