现在很多框架都用到注解方式,比如Spring,Struts等等框架。JDK自带也有一些注解例如注释类型 @Override,@SuppressWarnings,@Deprecated等等
那么注解是怎么定义以及用反射怎么调用呢
package javatribe.fts.annotation;
@ItcastAnnotation(annotationAtt=@MetaAnnotation("ttttt"),color="red",value="abc",arrayAtt={4,5,6})
public class AnnotationTest {
/**
* @param args
*/
@SuppressWarnings("deprecation")
@ItcastAnnotation("xxxx")
public static void main(String[] args) {
// 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());
}
}
//说明该方法已经过时,不建议使用
@Deprecated
public static void sayHello(){
System.out.println("hello,what are you want to do");
}
}
package javatribe.fts.annotation;
import java.lang.annotation.*;
//注解返回类型可以使字符串,数据,注解类型等等
//RetentionPolicy是枚举类型
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
String color() default "blue";
String value();
int[] arrayAtt() default {1,2,3};
MetaAnnotation annotationAtt() default @MetaAnnotation("abc");
}
package javatribe.fts.annotation;
public @interface MetaAnnotation {
String value();
}