常见的注解:
一、系统预定义的三个最基本的注解
- @Override:它是又JDK的核心类库定义,读取它是由编译器
作用:注释这个方法是一个“重写”的方法,让编译器对这个方法的签名进行检查 - @SuppressWarnings(“all”):抑制警告
- @Deprecated:告知编译器和程序员这个方法、属性已过时,不建议使用。
二、文档注释
- 单行注释
- 多行注释
- 文档注释(Java特有)
@param,@retrun,@throws,@author
三、单元测试相关注释
- 声明:第三方声明,不是JDKsm
- 有JUnit框架来读取
- 使用
(1)引入第三方回归测试框架jar
public class TestUnit {
@Before
public void Before(){
System.out.println("before");
}
@Test
public void t1() {
System.out.println("ttt");
}
@Test
public void t2() {
System.out.println("ttt");
}
@After
public void after(){
System.out.println("after");
}
@BeforeClass
public static void sb() {
System.out.println("当前类类初始化执行");
}
@AfterClass
public static void ab() {
System.out.println("所以方法之后,只执行一次");
}
}
四、自定义注解
/*
* 自定义注解:
* (1)声明
* 格式 【修饰符】 @interface 注解名
* (2)使用
* (3)读取
* 如果需要用“反射”读取某个注释,那么注释声明的时候,一定要增加@Retention(RetentionPolicy.RUNTIME)
*
* (4)元注解:注解注解的注解,给注解加的注解,在注解声明时,在上面加的注解
* @Target:标记这个注释可以用在xx位置。由ElementType枚举的常量对象来指定
*
* @Retention(xx):标记这个这个注解可以滞留到xx阶段。
* 这个声明周期又RetentionPolicy枚举的常量对象来指定。SOURCE(源代码),CLASS(字节码),RUNTIME(运行时)
*
* @Documented
* 作用:标记这个注解是否可以被javadoc.exe读取
*
* @Inherited 是否可以被子类继承
*
* (5)配置参数
* 如果参数只有一个,并且名称是value,那就可以省略“参数名=”
*
*/
public class TestDefineAnnotation {
public static void main(String[] args) {
Class clazz= Myclass.class;
MyAnnotation my = (MyAnnotation) clazz.getAnnotation(MyAnnotation.class);
System.out.println(my);
}
}
@MyAnnotation
class Myclass{
@MyAnnotation("1")
public void t1() {
}
}
//声明注解
@Inherited
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{
String value() default "0";//配置参数
}