page contents

注解类型的对象是怎样创建的?可以手动创建一个吗?

Pack 发布于 2020-01-17 15:49
阅读 467
收藏 0
分类:Java开发

在一个方法或者类或者field打了一个运行时标注,我们可以通过反射获取这个标注类型的对象,那么这个对象是怎样创建的?可以手动创建一个吗?


221
Pack
Pack

这个注解对象是jdk代理对象,设计模式中代理模式tom老师好像手写过class字节码生成嘛。


我之前专门把这个代理对象弄出来看看:

这个是测试注解

attachments-2020-01-agnuB9Cp5e21673106680.png


debug 结果

attachments-2020-01-kt2Nhmx15e21673885555.png

这个:sun.reflect.annotation.AnnotationInvocationHandler 是代理类$Proxy1的 InvocationHandler

图片memeberValues把注解的属性和值保存起来了,调用的时候直接可以从容器获取到。


//保存生成的代理对象字节码

System.setProperty(“sun.misc.ProxyGenerator.saveGeneratedFiles”, “true”);


估计就是生成代理对象的生成器就是它了:ProxyGenerator

请先 登录 后评论