理解Java基础之注解Annotation

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  代码:

  @SuppressWarnings(“unchecked”) 如果SuppressWarnings所声明的被禁止警告个数为一个时,可以省去大括号:

  @SuppressWarnings(“unchecked”) 五、自定义annontation示例

  示例共涉及四个类:

  清单1:Author.java

  packagecom.magc.annotation;

  importjava.lang.annotation.Documented;

  importjava.lang.annotation.ElementType;

  importjava.lang.annotation.Retention;

  importjava.lang.annotation.RetentionPolicy;

  importjava.lang.annotation.Target;

  /*** 定义作者信息,name和group * @authormagc **/

  @Retention(RetentionPolicy.RUNTIME)

  @Target(ElementType.METHOD)

  @Documentedpublic@interfaceAuthor

  {

  String name();

  String group();

  }

  清单2:Description.java

  /*** */ packagecom.magc.annotation;

  importjava.lang.annotation.Documented;

  importjava.lang.annotation.ElementType;

  importjava.lang.annotation.Retention;

  importjava.lang.annotation.RetentionPolicy;

  importjava.lang.annotation.Target;

  /*** @authormagc * * 定义描述信息 value*/

  @Retention(RetentionPolicy.RUNTIME)

  @Target(ElementType.TYPE)

  @Documentedpublic@interfaceDescription

  {

  String value();

  }

  清单3:Utility.java

  packagecom.magc.annotation;

  @Description(value =”这是一个有用的工具类”)publicclassUtility {

  @Author(name =”haoran_202″,group=”com.magc”)publicString work()

  {return”work over!”;

  }

  }

  注:这是个普通的Java类,运行了@Description和@Author注解。

  清单3:AnalysisAnnotation.java

  packagecom.magc.annotation;

  importjava.lang.reflect.Method;

  publicclassAnalysisAnnotation

  {

  /*** 在运行时分析处理annotation类型的信息  * * */

  publicstaticvoidmain(String[] args)

  {try{//通过运行时反射API获得annotation信息

  Class rt_class =Class.forName(“com.magc.annotation.Utility”);

  Method[] methods =rt_class.getMethods();

  booleanflag =rt_class.isAnnotationPresent(Description.class);

  if(flag) { Description description =(Description)rt_class.getAnnotation(Description.class);

  System.out.println(“Utility’s Description—>”+description.value());

  for(Method method : methods) {if(method.isAnnotationPresent(Author.class))

  { Author author =(Author)method.getAnnotation(Author.class);

  System.out.println(“Utility’s Author—>”+author.name()+”from “+author.group());

  }

  }

  }

  }

  catch(ClassNotFoundException e)

  {

  e.printStackTrace();

  }

  }

  }

  注:这是个与自定义@Description和@Author配套的基础框架或工具类,通过此类来获得与普通Java类Utility.java关联的信息,即描述和作者。

  运行AnalysisAnnotation,输出结果为:

  Utility’s Description—>这是一个有用的工具类

  Utility’s Author—>haoran_202 from com.magc

[1][2]

却只能这样。只有对爱的人,我们才会斤斤计较,锱铢必较。

理解Java基础之注解Annotation

相关文章:

你感兴趣的文章:

标签云: