******注解*****Annotation
概述:Java提供了一种原程序中的元素关联任何信 息和任何元数据的途径的方法元数据:可以理解为满足某种结构的数据key=value
注解和注释的区别:
注释只能够在源码中存在注解不仅能在源码中存在,而且作用在编译时期和运行时期。***************************************
常见的注解:1,@override 重写方法表示该直接修饰的方法必须满足重写的规则,否则编译报错,该注解有编译器提取识别。2,@Deprecated 表示该方法已经过时了
3,suppressWarnings 表示忽略警告, 可以通过这个注解消除警告线,但是并没有去除安全隐患。
4,FunctionInterface
表示当前接口是一个函数接口,函数接口:当一个接口中只有一个抽象方法的时候 成为函数式接口抽象方法:抽象方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写。 注解的分类1)按照运行机制划分:源码注解:只在源码中存在,编译成.class文件就 不存在了。编译时注解:在源码和.class文件中都存在。像前 面的@Override、@Deprecated、 @SuppressWarnings,他们都属于编译时 注解。 执行时就不存在运行时注解:在运行阶段还起作用,甚至会影响运 行逻辑的注解。开发者还可以获取该 注解。
2)按照来源划分:
【来自JDK的注解——来自第三方的注解——自定义注解】3)元注解:
元注解是给注解进行注解,可以理解为注解的注解就是元注解。**************************************
注解的语法:1,注解是有@interface关键字来修饰 //不是接口2,注解的成员, //String name(); 可默认值int age() default 18; 也可是常量注意:仅看起来像接口的方法,类似成员变量,不 能有参数成员的类型:八大基本类型,string,class,annotation,枚举,一维数组。3,注解类可以没有成员,没有成员的注解称为标识 注解。
4,如果注解只有一个成员,则成员名必须取名为 value(),在使用时可以忽略成员名和赋值号( =)。**************元注解@Target({ElementType.METHOD,ElementType.TYPE})
是这个注解的作用域@Retention(RetentionPolicy.RUNTIME)
是它的生命周期@Inherited
是一个标识性的元注解,它允许子注解继承它。@Documented
生成javadoc时会包含注解。***************************************
注解的使用:四种格式:格式一:@<注解名>(<成员名1>=<成员值1>,<成员名 2>=<成员值2>,…) 注意:有多少属性就写多少属性格式二:@注解名称(属性的值)
注意:适用于只有一个属性的情况格式三:@注解名称({属性值1,属性值2,属性值 3,....})
注意:使用于属性类型是数组的情况格式四:@注解名称
注意:适用于是标记注解的情况 创建一个注解,:用四个元注解定义这个注解创建类关联这个注解。