zoukankan      html  css  js  c++  java
  • 简单使用自定义注解

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

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

  • 相关阅读:
    [cocos2dx 3.0 + xcode]疑难点记录
    [转]全球付虚拟卡申请流程~
    [转]全球付虚拟卡申请开发者账号的流程~
    [cocos2d-x3.0]Android+NDK+Eclipse环境搭建及编译步骤~
    Torque2D MIT 学习笔记(27) ---- ImageFont的使用以及字体ImageAsset的工具生成
    关于拒绝测试驱动开发(NoTDD)
    工作两年随感
    一个Java应用,三种字体风格(Java, Windows, Mac),真是蛋疼
    看看这蛋疼的Java代码
    Bash实用技巧:同时循环两个列表
  • 原文地址:https://www.cnblogs.com/dwwzone/p/13063983.html
Copyright © 2011-2022 走看看