Java Annotation组合,重用属性

时间:2014-10-12 18:15:48

标签: java annotations composition

我想做这样的事情:

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

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

@FetchSize("1000")

这样的事情是否可能,以及如何使其发挥作用?

1 个答案:

答案 0 :(得分:3)

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

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

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