我正在尝试做一些Java注释魔术。我必须说,我仍在追赶注释技巧,并且某些事情对我来说还不太清楚。
所以...我有一些带注释的类,方法和字段。我有一个方法,它使用反射对类进行一些检查并将一些值注入(inject)到类中。这一切都很好。
但是,我现在面临的情况是我需要一个注释实例(可以这么说)。所以...批注与常规接口(interface)不一样,并且您不能对类进行匿名实现。我知道了。我在这里浏览了有关类似问题的一些帖子,但似乎无法找到所需的答案。
我基本上想获得一个注解的实例,并能够使用反射来设置它的某些字段(我想)。有没有办法做到这一点?
最佳答案
好吧,显然没有那么复杂。 真的!
正如一位同事指出的那样,您可以像下面这样简单地创建注释的匿名实例(如任何接口(interface)):
MyAnnotation:
public @interface MyAnnotation
{
String foo();
}
调用代码:
class MyApp
{
MyAnnotation getInstanceOfAnnotation(final String foo)
{
MyAnnotation annotation = new MyAnnotation()
{
@Override
public String foo()
{
return foo;
}
@Override
public Class<? extends Annotation> annotationType()
{
return MyAnnotation.class;
}
};
return annotation;
}
}
归功于Martin Grigorov。