【java基础】05.Java注解Annotation

1.工作方式:
  Annotation并不直接影响代码语义,但是能够以工作的方式被看做类似程序的工具或者类库,它会反过来对正在运行的程序语义有所影响。Annotation可以从源文件、class文件或者在运行时反射的多种方式被读取。
a) Override注解表示子类要重写(override)父类的对应方法。
b) Deprecated注解表示方法是不建议被使用的。
c) SuppressWarnings注解表示抑制警告。
 
2.特性
2.使用方式: 
自定义注解:
当注解中的属性名为value时,在对其赋值时可以不指定属性的名称而直接写上属性值即可;除了value以外的其他值都需要使用name=value这种赋值方式,即明确指定给谁赋值。
public @interface AnnotationTest{
      String value();
}
当我们使用@interface关键字定义一个注解时,该注解隐含地继承了java.lang.annotation.Annotation接口;如果我们定义了一个接口,并且让该接口继承自Annotation,那么我们所定义的接口依然还是接口而不是注解;Annotation本身是接口而不是注解。可以与Enum类比
 
搭配反射机制,可以实现
 
eg:
@Retention(RetentionPolicy.CLASS)
public @interface MyAnnotation{
    String hello() default "shengsiyuan";
    String world();
}
   
@MyAnnotation(hello = "beijing", world = "shanghai")
public class MyTest{
    @MyAnnotation(hello = "tianjin", world = "shangdi")
    @Deprecated
    @SuppressWarnings("unchecked")
    public void output(){
        System.out.println("output something!");
    }
}
 
 
注解在JUnit中的应用:
 
JUnit4的执行的一般流程:
a) 首先获得待测试类所对应的Class对象。
b) 然后通过该Class对象获得当前类中所有public方法所对应的Method数组。
c) 遍历该Method数组,取得每一个Method对象
d) 调用每个Method对象的isAnnotationPresent(Test.class)方法,判断该方法是否被Test注解所修饰。
e) 如果该方法返回true,那么调用method.invoke()方法去执行该方法,否则不执行。
 
  单元测试不是为了证明你是对的,而是证明你没有错误。
  JUnit3.8版本是完全基于反射:
public class Test extends TestCase{
     public void testAdd(){
        system.out.println("hello");
    }
}
  JUnit4.x是反射加注解的 
public class Test{
     @Test
     public void hello(){
        system.out.println("hello");
    }
}

 
 
注:此文档为学习圣思园风中叶教程结合自身学习所记录。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值