码迷,mamicode.com
首页 > 编程语言 > 详细

Java注解

时间:2016-06-15 22:18:03      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

1.常用的注解:
public class App_anno {
     //重写父类的方法
     @Override
     public String toString(){
            return super.toString();
     }
     
     //标记方法已经过时,但是依然可以使用
     @Deprecated
     public void func0(){
     }
     
     //抑制编译器警告
     @SuppressWarnings ({"all"})
     public void func1(){
           List list = null;
     }
     
     //自定义注解
     @Author(name = "zhangsan", age = 0,from = { "湖北","十堰" })
     public void func2(){
           
     }
}
 
2.自定义注解
     
public @interface Author {
     /**
      * 自定义注解:
      * 注解的属性
      * 1.修饰为默认或public
      * 2.不能有方法体
      */
     String name();
     int age();
     String sex() default "男"; //带默认的注解,使用的时候就可以不写此属性值
     String[] from();//注解属性类型为数组
}
 
  • 注解属性的作用:原来写在配置文件中的信息,可以通过注解的属性进行描述。
  • Annotation 的属性声明方式:String name()或String[] likes();
  • 属性默认值声明方式:String name() default “xxx”;
  • 特殊属性value:如果注解中有一个名称value的属性,那么使用注解时可以省略value=部分,如@MyAnnotation(“xxx")
  • 特殊属性value[];
  • 枚举值之间使用逗号分隔
  • @MyAnnotation(name="jack",age=30,likes={"唱歌","跳舞"})
 
3.元注解
元注解,表示注解的注解!
 
指定注解的可用范围:
@Target({
TYPE,    
FIELD,     字段
METHOD,  方法
PARAMETER,   参数
CONSTRUCTOR, 构造器
 LOCAL_VARIABLE  局部变量
})
 
// 元注解 - 2. 指定注解的声明周期
@Retention(RetentionPolicy. SOURCE)    注解只在源码级别有效
@Retention(RetentionPolicy. CLASS)      注解在字节码即别有效  默认值
@Retention(RetentionPolicy. RUNTIME)   注解在运行时期有效
 
例如:
//元注解1:定义注解的可用范围
@Target( value = {ElementType.TYPE,ElementType.FIELD ,ElementType.METHOD,ElementType.PARAMETER,
           ElementType. CONSTRUCTOR,ElementType. LOCAL_VARIABLE})
//@Target({ElementType.METHOD,ElementType.FIELD,ElementType.TYPE})  规定只能在方法、字段、类上用
 
//元注解2:指定注解的生命周期
@Retention(RetentionPolicy.RUNTIME )//运行级别有效(最高级别)
public @interface Author {
     /**
      * 自定义注解:
      * 注解的属性
      * 1.修饰为默认或public
      * 2.不能有方法体
      */
     String name();
     int age();
     String sex() default "男"; //带默认的注解,使用的时候就可以不写此属性值
     String[] from();//注解属性类型为数组
}
 
4.通过反射来获取注解信息
//通过反射来获取注解信息
     @Test
     @Author(name = "小王", age = 21,from = { "湖北","十堰" })
     public void func3() throws Exception{
            //获取注解信息:name,age,from
            Class clazz = this.getClass();
            //1.先获取代表方法的method
           Method m = clazz.getMethod("func3");
            //2.在获取方法上的注解
            Author author = m.getAnnotation( Author. class);
           System. out.println(author.name());
           System. out.println(author.age());
           System. out.println(author.from()[0]);
     }

Java注解

标签:

原文地址:http://www.cnblogs.com/wwha/p/5588910.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!