注解是Java提供的设置程序中元素关联信息和元数据的方法,它是一个接口,程序可以通过反射获取指定程序中元素的注解对象,然后通过注解对象获取注解中的元数据信息。
下面写一个简单的自定义注解以及使用方法
自定义注解
import java.lang.annotation.*; @Target(ElementType.FIELD) //@Target修饰注解作用的范围,FIELD说明作用于描述域,其他选项可以百度获取 @Retention(RetentionPolicy.RUNTIME) //@Retention说明注解被保留的级别,RUNTIME说明运行时有效,其他选项可以百度获取 @Documented //@Documented表明该注解可以被javadoc类的工具文档化 public @interface FruitProvider { //供应商编号 public int id() default -1; //供应商名称 public String name() default ""; //供应商地址 public String address() default ""; }
自定义注解处理器
import java.lang.reflect.Field; public class FruitInfoUtil { public static void getFruitInfo(Class<?> clazz) { String strFruitProvider = "供应商信息:"; Field[] fields = clazz.getDeclaredFields();//通过反射获取处理注解 for (Field field : fields) { //如果成员被该注解标注 if (field.isAnnotationPresent(FruitProvider.class)) { //拿到对应的注解信息 FruitProvider fruitProvider = (FruitProvider) field.getAnnotation(FruitProvider.class); //处理注解信息 strFruitProvider = "供应商编号:" + fruitProvider.id() + " 供应商名称:"+ fruitProvider.name() + " 供应商地址:" + fruitProvider.address(); System.out.println(strFruitProvider); } } } }
使用注解接口
public class Apple { @FruitProvider(id = 1,name = "陕西红富士",address = "陕西省西安市") private String appleProvider; public void setAppleProvider(String appleProvider) { this.appleProvider = appleProvider; } public String getAppleProvider() { return appleProvider; } }
测试一下
public class Test { public static void main(String[] args) { FruitInfoUtil.getFruitInfo(Apple.class); } }
输出结果
供应商编号:1 供应商名称:陕西红富士 供应商地址:陕西省西安市
至此完成简单的自定义注解定义及使用
原文:https://www.cnblogs.com/dwwzone/p/13063983.html