如果还有重要资料需要加入,请查看的各位帮忙备注
1. 创建一个标记注释?
2. 创建一个元数据标记注释,并在其内部定义所有基本类型和String的元数据?
3. 创建一个标记注释时,我们可以为这个标记注释指定哪些特性,并大概说一下他们的用处?
4. 有哪些常用的标记注释,并阐述我们什么时候会用到它?
5. 提取标记信息需要使用到那个包,列举出所有能被标记注释的程序元素?
6. 说明APT的功能,能举例说明最好?
答案1-2:
@interface 标记注释名字
{
String name() default "123";
int id() default 1;
...
}
答案3:
@Retention(RetentionPolicy.CLASS|SOURCE|RUNTIME)
标记注释在源文件中,一是我们可以对源文件进行处理,生成我们想要的源文件,二是可以提取配置标记生成配置文件,比如是在哪里使用呢?APT源代码处理工具
标记注释在Class文件中,这个暂时不知道在哪里用????
标记注释在运行过程中,可以随时通过标记访问标记的程序元素,请参考最后面应用一
@Target(ElementType.ANNOTATION_TYPE|CONSTRUCTOR|PACKAGE|TYPE|METHOD|FIELD|LOCAL_VARIABLE|PARAMETER)
指定标记可用于那个程序元素上
@Document
表明这个标记会被提取到Javadoc生成的API文档中
@Inherit
父类上有这个标记,子类会继承这个标记
答案4:
@Override, @Deprecated, @SupressWarnings(value="uncheck")
答案5:
java.lang.reflect, Package, Class, Field, Constructor, Method
答案6:
能生成额外的源文件和相关文档,还可以编译源文件和生成的源文件,相关类AnnotationProcessor, AnnotationProcessorFactory, AnnotationProcessorEnvironment,TypeDeclaration
应用一:在运行的时候通过反射的方法访问标记的程序元素,并动态的为程序元素注入相关属性.通过注释+反射,随时可以为GUI界面装配或更改Listener,所以在一个GUI内我们有时只需要定制好框架和注释,Listener可以通过注入导入,挺6的
应用二:生成hibernate xml文档,将持久化对象的set和get方法转换为SQL语句执行,转换方式-->使用cglib生成代理类-->持久化对象调用方法转到代理对象执行,生成一条SQL语句直接执行或添加到一条SQL线程执行集合中