我正在尝试做一些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

10-04 23:04