首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果只有一个Class<Annotation>可用,如何传递Annotation对象?

如果只有一个Class<Annotation>可用,如何传递Annotation对象?
EN

Stack Overflow用户
提问于 2013-05-27 16:21:24
回答 1查看 456关注 0票数 1

假设有这样的方法:

代码语言:javascript
复制
void annotate(Annotation annotation);

如果我只有AnnotationClass可用,那么在java中把Annotation对象传递给这个方法的惯用方式是什么?

代码语言:javascript
复制
public @interface SomeAnnotation {

}

SomeAnnotation.getClass();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-27 16:38:42

正如您已经提到的,注释只是一种特殊类型的接口:

public @interface SomeAnnotation{}

通常情况下,你实际上需要一个注释的“实例”,通常是从带注释的元素中获得的,例如obj.getClass().getAnnotation(SomeAnnotation.class)。这将返回实现接口SomeAnnotation的动态代理,因此注释的所有属性实际上都是返回当前值的方法。

如果出于某种原因你想要模拟这个功能,你可以通过自己创建动态代理或者像下面这样“实现”注解来很容易地做到:

代码语言:javascript
复制
public @interface SomeAnnotation{
    int value();
}



void annotate(new SomeAnnotation() {
    int value() {
         return 5;
    }
}

匿名内部类创建注释的实例,如下所示:

代码语言:javascript
复制
@SomeAnnotation(5)
public class MyClass {
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16769056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档