对代码的说明
- 注释:给程序员看的。
分为单行注释、多行注释和文档注释(用于生成API文档)。 - 注解:给计算机看的。
最常见的一个注解:@Override
文档注释里用到的注解:@param、@return、@author、@since 等。
注解的定义及使用
@元注解 //注解也需要被注解
public @interface MyAnnotation {
...
}
格式非常奇怪。通过反编译(javap 命令)我们可以发现其本质:
注解本质上是一个接口,它默认继承Annotation接口
public interface MyAnnotation extends java.lang.annotation.Annotation {
...
}
既然本质是接口,于是就可以在其内部声明成员方法。但是特殊的是,这个成员方法的作用类似于成员变量,以后会被赋值!
- 所以成员方法不能用 void 作为返回值
- 成员方法返回值类型有要求:基本数据类型、String、枚举类、注解类及其他们的数组。也就是说几乎不能使用自定义的类。
举个带参的例子,在下面可以传参
- 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。
- 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。
- 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略
注解的使用
常用来修饰类、方法
@MyAnnotation
public class Test {
}
元注解
用于描述注解的注解
- @Target:注解的作用范围
- @Retention:注解的有效时期
- @Documented:描述注解是否被抽取到api文档中
- @Inherited:注解是否被子类继承
注解的作用
- 编写API文档
- 把 java 文件中的包名去掉。利用notepad修改编码。
- Shift+右键 可以 在此处创建命令行
- 利用 javadoc 命令 可以生成API文档。
- 编译检查
- @Override、@FunctionalInterface
- @Deprecated 标记一个方法已过时。为什么不直接删掉这个方法?为了向下兼容。
- @SuppressWarnings:去除警告。一般传递参数all,@SuppressWarnings("all")
- 配置参数
通过类对象可以获取注解对象。
网友评论