一尘不染

如何创建注释实例

java

我正在尝试做一些Java注释魔术。我必须说,我仍在追赶注释技巧,并且某些事情对我来说还不太清楚。

所以…我有一些带注释的类,方法和字段。我有一个方法,它使用反射对类进行一些检查并将一些值注入到类中。这一切都很好。

但是,我现在面临的情况是我需要一个注释实例(可以这么说)。所以…批注与常规接口不同,您不能对类进行匿名实现。我知道了。我在这里浏览了有关类似问题的一些帖子,但似乎无法找到所需的答案。

我基本上想获得一个注解的实例,并能够使用反射来设置它的某些字段(我想)。有没有办法做到这一点?


阅读 250

收藏
2020-12-03

共1个答案

一尘不染

好吧,显然没有那么复杂。 真!

正如一位同事所指出的,您可以像下面这样简单地创建注释的匿名实例(如任何接口):

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。

2020-12-03