如何将类型(通用)传递给注释?
How to pass a type (generic) to an annotation?
我想做一个注释,生成一个具有默认 return 值的方法。因为注释不能是通用的,所以我必须以某种方式获得它注释的方法的 return 类型。
我的目标是仅用 return <defaultReturnValue>
替换该方法,默认 defaultReturnValue
取决于传递给注释的值。
<?>
是注解方法的return类型。
public @interface WhenDisabled{
<?> defaultReturn();
}
@WhenDisabled(1)
int foo1() {
// ... complicated calculation
return result;
}
class MyClass {
}
@WhenDisabled(new MyClass())
MyClass foo2() {
// ... complicated calculation
return result;
}
在此示例中,foo1
的正文应替换为 return 1;
,foo2
的正文应替换为 return new MyClass();
。
如JLS section 9.6.1所述,注解元素的类型(注解类型中方法的return类型)只能是:
- 原始类型
String
Class
或调用 Class
- 枚举类型
- 注释类型
- 组件类型为上述类型之一的数组类型。
您最好将信息编码为 String
。
我想做一个注释,生成一个具有默认 return 值的方法。因为注释不能是通用的,所以我必须以某种方式获得它注释的方法的 return 类型。
我的目标是仅用 return <defaultReturnValue>
替换该方法,默认 defaultReturnValue
取决于传递给注释的值。
<?>
是注解方法的return类型。
public @interface WhenDisabled{
<?> defaultReturn();
}
@WhenDisabled(1)
int foo1() {
// ... complicated calculation
return result;
}
class MyClass {
}
@WhenDisabled(new MyClass())
MyClass foo2() {
// ... complicated calculation
return result;
}
在此示例中,foo1
的正文应替换为 return 1;
,foo2
的正文应替换为 return new MyClass();
。
如JLS section 9.6.1所述,注解元素的类型(注解类型中方法的return类型)只能是:
- 原始类型
String
Class
或调用Class
- 枚举类型
- 注释类型
- 组件类型为上述类型之一的数组类型。
您最好将信息编码为 String
。