【1】格式、位置
格式:@符合
位置:修饰包、类、构造器、方法、成员变量、参数、局部变量。
【2】作用
JDK5.0新增,也叫元数据。
在编译、类加载、运行时被读取,通过注解,可以在不改变原有逻辑代码的情况下,在源文件中嵌入补充信息,用作标记、配置作用。
代码分析工具、开发工具、部署工具,可以通过这些补充信息进行验证或部署。
框架 = 注释+反射+设计模式
【3】注解实例1:Junit
@Test @After @Before
【4】注解实例2:文档注释
放在文档注释里,结合javadoc工具使用生成API【Tools —> Generate JavaDoc】
package com.msb.anno;
/**
* @author nini
* @date 2021/7/15-07-15-9:16
* @description TestJavaSE
* @version 1.0
*/
public class Person {
/**
* eat方法,实现了**功能
* @param num1 人数
* @param num2 分数
*/
public void eat(int num1,int num2){
}
/**
*
* @param age 年龄
* @return int
* @throws RuntimeException 当年龄大于100
* @throws IllegalArgumentException 当年龄小于0时
* @see Student 参照Student类文档
*/
public int sleep(int age){
new Student();
if (age>100){
throw new RuntimeException();
}
if (age < 0) {
throw new IllegalArgumentException();
}
return 10;
}
}
【5】注解实例3:JDK内置注解
@Override 限定重写父类方法。不符合重写要求会有错误提示。
@Deprecated 过期、废弃方法。调用时,用删除线删除,不建议使用。
@SuppressWarnings 抑制警告。当代码编写不规范,存在警告时,使用抑制警告、传入参数,不再提示警告。
【6】注解实例4:使用注解代替配置文件
servlet、spring
【7】注解实例5:自定义注解
package com.msb.anno1;
public @interface MyAnnotation {
String[] value() default "123";//成员变量,默认值123。带参数的是元数据,不带参数标记。
}
【8】元注解
用于修饰其他注解的注解
Retention 、Target 、Documented 、Inherited
package com.msb.anno1;
import java.lang.annotation.*;
/*
1.@Retention(RetentionPolicy.SOURCE)被修饰的MyAnnotation注解的生命周期
.SOURCE 在源文件中有效
.CLASS 在字节码中有效
.RUNTIME 在运行时有效,在内存中保留,使用反射可以获取到注解
2.@Target({ElementType.TYPE})修饰的MyAnnotation注解的,可以修饰那些程序元素。
使用枚举元素TYPE:标志 MyAnnotation注解只可以修饰 类、接口。
3.@Documented 修饰的MyAnnotation注解,使用Javadoc提取API时,MyAnnotation注解被提出到API中显示。
4.@Inherited 修饰的MyAnnotation注解 修饰父类,那么子类自动也有MyAnnotation注解
* */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Inherited
public @interface MyAnnotation {
String[] value() default "123";//成员变量,默认值123。带参数的是元数据,不带参数标记。
}