注解的定义与反射调用
2014-02-14 22:23
148 查看
注解就相当 于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类。就像你要调用某个类,得先有开发好这个类。
@Retention(RetentionPolicy.RUNTIME)这个称为元注解。加了个说明,说哥们你这个需要保持到运行期间。如果不写这个。默认值为到class阶段。
@Target({ElementType.METHOD})表明这个注解类只可以放在类的方法上注解。
@Target({ElementType.METHOD,ElementType.TYPE})表明这个注解类只可以放在类的方法和类上得可以注解。
package cn.itcast.day2; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import cn.itcast.day1.EnumTest; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD,ElementType.TYPE}) public @interface ItcastAnnotation { String color() default "blue"; String value(); int[] arrayAttr() default {3,4,4}; EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED; MetaAnnotation annotationAttr() default @MetaAnnotation("lhm"); }
package cn.itcast.day2; public @interface MetaAnnotation { String value(); }
@ItcastAnnotation("xyz"),如果只有给value赋值,那么可以这样写,不用@ItcastAnnotation("value=xyz"),且其它值要有默认值或都只有value一个参数。
package cn.itcast.day2; import java.lang.reflect.Method; import javax.jws.soap.InitParam; @ItcastAnnotation(annotationAttr=@MetaAnnotation("flx"),color="red",value="abc",arrayAttr=1) public class AnnotationTest { /** * @param args */ @SuppressWarnings("deprecation") @ItcastAnnotation("xyz") public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub System.runFinalizersOnExit(true); if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){ ItcastAnnotation annotation = (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class); System.out.println(annotation.color()); System.out.println(annotation.value()); System.out.println(annotation.arrayAttr().length); System.out.println(annotation.lamp().nextLamp().name()); System.out.println(annotation.annotationAttr().value()); } Method mainMethod = AnnotationTest.class.getMethod("main", String[].class); ItcastAnnotation annotation2 = (ItcastAnnotation)mainMethod.getAnnotation(ItcastAnnotation.class); System.out.println(annotation2.value()); } @Deprecated public static void sayHello(){ System.out.println("hi,传智播客"); } }
相关文章推荐
- 33了解和入门注解的应用34 注解的定义与反射调用35为注解增加各种属性
- 7.5.1注解的定义与反射的调用
- 注解的定义和反射调用
- Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合
- Java基础---Java---基础加强---内省的简单运用、注解的定义与反射调用、 自定义注解及其应用、泛型及泛型的高级应用、泛型集合的综合
- 34_注解的定义与反射调用
- 注解的定义与反射调用
- 注解的定义与反射调用
- 注解的定义与反射调用
- java反射--注解的定义与运用以及权限拦截
- java反射--注解的定义与运用以及权限拦截
- 用反射和注解实现对findViewById的简化调用
- CodeDom系列--事件(event)定义和反射调用
- CodeDom系列--事件(event)定义和反射调用
- java反射--注解的定义与运用以及权限拦截
- C# 反射详解:定义、创建对象、调用实例方法及静态方法
- MyBatis+Spring在注解@Autowried后通过反射的方式调用方法获取注入的Service或DAO对象为空
- 注解:认识注解、注解的分类、注解的生命周期、自定义注解及反射调用、为注解添加属性
- java反射--注解的定义与运用以及权限拦截
- 自定义注解(2)—定义和使用(利用反射获取)