欢迎进入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]
却只能这样。只有对爱的人,我们才会斤斤计较,锱铢必较。