1.我们所说的注解可分为两大类:
元注解 和 组合注解
2.元注解有四类:@Target
@Retention
@Documented
@Inherited
3.组合注解:@Override
@suppresswarnings
@@documented
.....
......
4.是否考虑过:如何将代码中的多个方法归为一类,并通过代码识别或拦截呢?
是否想偷懒,将变量的初始化全部交给代码自己处理呢?
这时候可以考虑“注解”一下,然后识别“注解”,注解是哪个类别,那么就做对应的操作。
所以。可以说“注解”的目的是“标识”,标识方法、变量。
注解”的识别并区分,需要借助反射获取,进而根据不同的注解,做出不同的处理。
是不是感觉像定义的变量。可以这么理解,不过也要知道,这个所谓的注解,需要借助反射才能获取,理解、识别。
5.那么元注解是啥子,组合有事什么东东呢?
可以将“元注解”理解为对“注解”的抽象,便于复用。“组合注解”是对“元注解”的集成。或这称组合注解依赖元注解。其实元注解也是一种规则约束。很多基本的每个开发者都有自己的写法,都适配岂不是很麻烦。
没的元注解,你也可以完全搞个新的。
组合注解,是对元注解的封装和自身扩展(对视定义变量,记录数值)。
元注解是,注解自定义注解的注解。第三方框架中很常见。当然“组合注解”也可以注解“组合注解”
6我们想要一个专门注解字段的组合注解怎么办呢:
组合注解名:mytest
只能在字段上使用,有专门的元注解帮助:@Target(ElementType.FIELD)
//ElementType.METHOD 则表示方法、ElementType.CONSTRUCTOR
运行时可以获取到注解(理解为注解生命周期):@Retention(RetentionPolicy.RUNTIME)
//@Retention(RetentionPolicy.CLASS) 在class文件可见,运行时不可获取
最终形态:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface mytest {
String value();
}
value 则是注解的同时,可以通过value传值。这个值可以通过反射获取。是不是增加的灵活性。