简单使用自定义注解

注解是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 供应商名称:陕西红富士 供应商地址:陕西省西安市

 

至此完成简单的自定义注解定义及使用

 

posted @ 2020-06-08 10:05  dwwzone  阅读(333)  评论(0编辑  收藏  举报