Oct 23

java注解Annation的小结 不指定

Heck , 23:38 , 编程杂谈 , 评论(0) , 引用(0) , 阅读(1082) , Via 本站原创 | |
1、从jdk1.5以后就开始出现注解了,主要有@override @depredate @supressWarning

2、怎么样生成一个注解呢?
  注解个普通的接口一样,多的就是仅仅是多添加了一个@,类似
  public @interface Test{
    public void value() default "this is  frist annation";
}
注意:注解里面可以由方法组成也可以有枚举组成等!

3、注解可以声明在类上面,也可以声明在方法上面,当然也可以声明在属性上面,可以通过@targer来表示
   @targer(ElementType.Construct)//在构造器上面进行声明
    ElementType.Field     //在属性上面进行声明
    ElementType.Method//在方法上面进行声明
    ElementType.Type  //在类上面进行声明  


4、注解也有声明周期,可以在编译的时候有效,也可以在jvm中有效,当然也可以在class文件中有效,主要通过
@Retention 来表示  
RetentionPolicy.Source  //注解将被编译器放弃,
RetentionPolicy.CLASS  //注解被虚拟机放弃
RetentionPolicy.RUNTIME //注解即保存在jvm也保存在class文件等

5、@Documented  表示生产的 javadoc文档中是否也看到注解的说明

6、@Inherited  表示注解是否可以被继承,如果写上了,当前类被注解的时候,子类也拥有了这个注解

7、实现一个简单的注解
@Target(ElementType.Method)
@Rettention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Test{
   public void value() default "this is first annation";
}
              
public class TestAnnation{
  @Test(value="this is second annation")
   public void test(){
   System.out.println("asfads");
}
注解解析原理:主要是通过反射机制,找到当前类,在判断当前类是否有注解!
  public static void main(Stringp[] args){
   Method[] method = Test.class.getDeclaredMethods();  
   for(Method m:method){
    boolean  flag = method.isAnnationPresent(Test);
   if(flag){
     Test t = method.getAnnation(Test.class);
   System.out.println("annnation name"+t.getName+"value:"+t.Value());
}
  
}
  
}
}
            

来源:Heck's Blog
地址:http://www.hecks.tk/java-annotation-summary-html/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
Tags: , ,