标签:
一.自定义注解类
Target 限制注解的使用范围
TYPE,
//用于类,接口,枚举但不能是注解
FIELD,
//字段上,包括枚举值
METHOD,
//方法,不包括构造方法
PARAMETER,
//方法的参数
CONSTRUCTOR,
//构造方法
LOCAL_VARIABLE,
//本地变量或catch语句
ANNOTATION_TYPE,
//注解类型(无数据)PACKAGE//Java包
Retention 处理策略
SOURCE,
//此类型会被编译器丢弃
CLASS,
//此类型注解会保留在class文件中,但JVM会忽略它
RUNTIME
//此类型注解会保留在class文件中,JVM会读取它
@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface Name { String value() default "苹果"; }
二.使用注解
public class AnnottionTest { @Name("香蕉") private String name ; public String getName() { return name; } public void setName(String name) { this.name = name; } }
三.注解处理类
public class Util { public static void getInfo(Class<?> clazz){ String strName=" 名称:"; Field[] fields = clazz.getDeclaredFields(); for(Field field :fields){ if(field.isAnnotationPresent(Name.class)){ Name name = (Name) field.getAnnotation(Name.class); strName=strName+name.value(); System.out.println(strName); } } } @Test public void fun(){ Util.getInfo(AnnottionTest.class); } }
标签:
原文地址:http://www.cnblogs.com/anye-key/p/4664020.html