gpt4 book ai didi

java - 有没有办法为 *any* 枚举声明注释属性?

转载 作者:太空狗 更新时间:2023-10-29 22:41:35 25 4
gpt4 key购买 nike

目前我正在为使用 JGoodies Binding 的 Java Swing 开发一个基于注解的绑定(bind)框架。在引擎盖下。不幸的是,我坚持使用 JRadioButton 绑定(bind)的注释。我想要做的是指定一个模型的属性名称,它包含一个特殊值(枚举)。如果此属性具有特定值,则应选择单选按钮。现在我想像这样在注释中指定值:

@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();

}

有什么解决办法吗?

最佳答案

它不会按照您希望的方式工作。正如您所发现的,您只能在注释中使用真正简单的返回类型。此外,尝试通过滥用 String 之类的方式来绕过这些限制是行不通的,因为您需要使用常量表达式来初始化注释的值。

我认为最接近的方法是使用字符串初始化,然后使用代码与枚举的 name() 进行比较。但是你的类型安全......

关于java - 有没有办法为 *any* 枚举声明注释属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1037531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com