Java注解组合,重用属性

Mar*_*ing 5 java annotations composition

我想做这样的事情:

@QueryHints(@QueryHint(name = "org.hibernate.fetchSize", value = FetchSize.value()))
@Target({ })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FetchSize {
    String value();
}
Run Code Online (Sandbox Code Playgroud)

不起作用的部分是value = FetchSize.value()。我想将 @FetchSize 中的值属性传递给目标注释@QueryHint,以便我可以像这样注释:

@FetchSize("1000")
Run Code Online (Sandbox Code Playgroud)

类似的事情是否可能以某种方式实现,我将如何使其发挥作用?

Sot*_*lis 4

不,这样的事情是不可能的。注释属性的值必须是常量表达式(和/或一些其他类型,例如enum类型)。

您在这里尝试做的是动态引用另一个注释属性的值。那是不可能的。

如果您控制注释处理器,那么您可以在那里执行该逻辑。如果你不这样做,你就很不走运,并且将不得不重新考虑你的设计。