这个是怎么实现自己的的

下文所使用的java版本信息
经过编译の后注解`TestAnnotation`的字节码是这样的:

那么接口怎么能够设置属性呢?简单来说就是java通过动态代理的方式为你生成了一个实现了"接口"`TestAnnotation`的实例(对於当前的实体来说例如类、方法、属性域等,这个代理对象是单例的)然后对该代理实例的属性赋值,这样就可以在程序运行时(如果将注解设置为运行时可见的话)通过反射获取到注解的配置信息

具体来说是怎么实现的呢?

写一个使用该注解的类:

最后一行的代码說明注解`TestAnnotation`的属性设置是在编译时就确定了的。(对属性的说明在[这里][1])

然后,运行上面的程序通过CLHSDB在eden区找到注解实例,

太长了只截取一部分。从中可以看到这个代理类实现了继承自`java.lang.reflect.Proxy`类,又实现了“接口”TestAnnotation

接下来查看一下代理对象的内容:

我要回帖

更多关于 什么叫做实现 的文章

 

随机推荐