【发布时间】:2010-07-19 15:00:50
【问题描述】:
伙计们有没有办法将注释作为直接参数传递(而不是通过执行所有反射开销)?例如在下面的代码中,我有一个包含 int 值的注释 Number,我想作为参数传递给 addImpl 方法,我该怎么做(除了反射)?
代码片段:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
public @interface Number {
int value();
}
public void add(int x2) {
addImpl(@Number(value = 10) lol, x2);
}
public void addImpl(Number a, int b) {
System.out.println(a.value() + b);
}
public static void main(String[] args) {
new TestClass().add(3);
}
【问题讨论】:
-
为什么 Number 被定义为注解而不是常规类?注释的目的是在编译时静态附加元数据。如果那不是您的目标,那么将其定义为注释的原因是什么?
-
数字只是我想出的一个示例,我这样做是为了使协议实现更容易;)
标签: java annotations