有没有办法为*any*枚举声明注释属性?
2022-09-01 21:25:50
目前,我正在为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();
}
任何想法如何解决这个问题?