前言
注解(也被称为元数据)为我们在代码中添加信息提供了一中形式化的方法,是我们可以在稍后的某个时刻非常方便地使用这些数据;
基本语法
Javase5自带的标准注解
定义在了Java.lang中
- @Override,表示当前方法的定义将会超类中的方法。
- @Deprecated,如果程序使用了该注解的元素,编译器会发出警告信息。个人理解为过时吧;
- @SuppressWarnings,关闭不当的编译器警告信息;
四个元注解
元注解专职负责注解其他的注解
@Target | 表示该注解可以用于什么地方。可能的ElementType参数有: |
---|---|
CONSTRUCTOR: 构造器的声明 | |
FIELD : 域声明(包括enum实例) | |
LOCAL_VARIABLE :局部变量声明 | |
METHOD : 方法声明 | |
PACKAGE :包声明 | |
PARAMETER :参数声明 | |
TYPE :类,接口(包括注解类型)或enum声明 |
@Retention | 表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数: |
---|---|
SOURCE :注解将被编译器丢弃 | |
CLASS :注解在class文件中可用,但会被VM丢弃 | |
RUNTIME :VM将在运行时期也保留注解,因此可以通过反射获取注解的信息 |
@Documented | 将次注解包含在Javadoc中 |
---|---|
@Inherited | 允许子类继承父类中的注解 |
注解中的元素
注解元素的可用类型:
- 所有的基本类型(int,float,double,boolean,long,short,byte,char)
- String
- Class
- enum
- Annotation
- 以上类型的数组形式
如果使用其他类型,编译器会报错,也不允许使用其他任何包装类型;
自定义注解
注解源代码
1 |
|
测试代码
1 |
|
运行结果:
1 |
|
总结
- 整体上来说还是没有什么难度吧,很快就能入门,前提是要知道反射
- 平时开发过程中自己几乎不会定义注解,但是使用的注解却不计其数,也大概知道了注解的原理