注解的类型(参数个数):
1.标注注解:一个没有成员定义的annotation类型被称为标注注解。这种annotation类型仅使用自身的存在与否来为我们提供信息。
2.单值注解
3.完整注解
注解的类型(注解的用途)
1.jDK内置系统注解 2.元注解 3.自定义注解
详:
@Override 用的最多,是标记注解,表示重写父类方法。
@SuppressWarnings 抑制编译警告注解 @ Depracated 过期不推荐标记的注解
自定义注解:当@interface关键字用来声明一个注解,将自动继承java.lang.annotation.Annotation接口。里面的每一个方法表示声明了一个可配置的参数,方法名即位参数名。
- 访问修饰符只能使用
public
或者default
- 返回值类型就是参数的类型且只能为
八种基本数据类型
、Class
、String
、Enum
、Annotations类型
以及上述类型所组成的 数组 - 通过
default
关键字声明参数的默认值。 - 如果只有一个参数成员最好命名为
value()
- 注解元素必须有确定的值,要么在定义注解元素时默认值指定,要么使用此注解时指定。非基本类型注解元素的值不可为
null
元注解:其作用就是负责注解其他的注解。
常用有1.@Target 2.@Retention 3.@Document 4.@Inherited
@Target(指定所修饰对象的范围):ElementType.CONSTRUCTOR/FIELD/LOCAL_VARIABLE/METHOD/PACKAGE/PARAMETER/TYPE 分别用户描述构造器/域/局部变量/方法/包/参数/类、接口(包括注解类型)或enum声明
@Retention(定义保留的时间长短): RetentionPoicy.SOURCE/CLASS/RUNTIME 在 源文件/class文件/运行时 有效(保留---即可通过反射)
@Document:标记注解,标记该注解类型的元素(带有注释的)会通过javadoc或者类似工具进行文档化
@Inherited:表示注解类型能被自动继承。 如果一个类使用了 @Inherited 类型的注解,则此类的子类也将含有该注解,当 Retention 为 RUNTIME 时通过反射API可以查询到此类以及其父类直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。