说在最开始的一句话:
我的理解肯定是不够的,我写的文档也只是个学习总结,不保证都对,只能说仅供参考,敬请指正,只不过以后我个人认识到错误后,不一定会回这个论坛修改,大概率只会修改我的本地文档而已。
注解的高度概括:
一些程序能看懂的注释,这些程序会执行 他们,但被注解的本身不是可执行语句,不会执行。
jdk自带有一些注解,如@Override等,使用时需要导入对应的包,他的本质也是有额外软件解析。
很多第三方软件有自己的注解,比如各种框架,数据库等等,使用时也不一定 需要编译,有时开发平台在编写代码的过程中就已经识别并执行了注解的操作,一般是配置引入。
自定义注解:
使用@interface关键字就可以定义,定义之后会自动继承java.lang.annotation.Annotation 接口,通常我会直接使用java.lang.*来覆盖掉。
配置的参数是有限制的:
String Class enum Annotation 数组类型
类型 变量名() [default 默认值]
如果只有一个配置参数的话,名字必须是value。
使用有参数的注解时需要指定参数:“参数名=参数值”,只有一个参数的时候可以直接写参数,不需要“参数名=”。
元注解指用于修饰注解的注解:
@Retention 用于标注Annotation的生命周期,传入一个枚举类型:RetentionPolicy. SOURCE/CLASS/RUNTIME
@Target 用于标注Annotation用来修饰什么元素(套娃),值的类型是ElemetType[],可选:ElementType.CONSTRUCTOR :构造器/FIELD:属性/
LOCAL_VARIABLE:局部变量/METHOD:方法/PACKAGE:包/PARAMETER:参数/TYPE:类、接口、注解类、 enum 声明
@Documented 它可以让javadoc把注释提取成文档,用它注解时,@Retention 必须被设置为 RetentionPolicy.RUNTIME
@Inherited 让注释有继承性
反射的高度概括:
动态获取类和对象的属性和方法的一套机制,这里包括所有类和对象。
代理模式就是反射的典型应用。