zoukankan      html  css  js  c++  java
  • java annotation

    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
        /**
         * 定义作者信息,name和group
         * @author sprinng
         *
         */
        @Retention(RetentionPolicy.RUNTIME)
        @Target(ElementType.METHOD)
        @Documented
    public @interface Author {
    
            String name();
            String group();
    }
    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    /**
     * @author sprinng
     *
     * 定义描述信息 value
     */
        @Retention(RetentionPolicy.RUNTIME)
        @Target(ElementType.TYPE)
        @Documented
        
    public @interface Description {
            String value();
    }
    @Description(value = "这是一个有用的工具类")
    public class Utility {
    
        @Author(name = "haoran_202",group="com.magc")
        public String work()
        {
            return "work over!";
        }
        
        
    
    }
    import java.lang.reflect.Method;
    
    public class AnalysisAnnotation {
    
        /**
         * 在运行时分析处理annotation类型的信息
         */
        public static void main(String[] args) {
            try {
                    //通过运行时反射API获得annotation信息
                    Class<?> rt_class = Class.forName("com.demo.Utility");
                    Method[] methods = rt_class.getMethods();
                    
                    boolean flag = rt_class.isAnnotationPresent(Description.class);
                    
                    if(flag)
                    {
                        Description description = (Description)rt_class.getAnnotation(Description.class);
                        System.out.println("Utility's Description--->"+description.value());
                        for (Method method : methods) {
                            if(method.isAnnotationPresent(Author.class))
                            {
                                Author author = (Author)method.getAnnotation(Author.class);
                                System.out.println("Utility's Author--->"+author.name()+" from "+author.group());
                                
                            }
                        }
                    }
                
                
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
        }
    
    }
  • 相关阅读:
    CocoaPods使用详细说明
    cocoapod使用
    Android-利用LinearGradient实现文字一闪一闪
    Android5.0 CheckBox颜色修改
    android实现文字渐变效果和歌词进度的效果
    Ceph 常规操作笔记
    Git版本控制器使用总结性梳理
    CentOS 7.5 部署 MySQL 5.7 基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)
    Ansible-playbook 运维笔记
    Docker容器基础介绍
  • 原文地址:https://www.cnblogs.com/sprinng/p/5641104.html
Copyright © 2011-2022 走看看