Java注解

mac2022-06-30  25

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]);      }

转载于:https://www.cnblogs.com/wwha/p/5588910.html

最新回复(0)