zoukankan      html  css  js  c++  java
  • java自定义注解教程

    1、定义注解类

    @Documented
    @Inherited
    @Target({ElementType.FIELD,ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface IniterValue {
        public String value() default "";
    }
    

     2、定义使用注解的类

    @Data
    public class User {
        @IniterValue(value = "2")
        private Integer age;
        @IniterValue(value = "小明")
        private String name;
    }
    

     3、定义注解解析器

    public class UserFactory {
        public static <T> T create(Class<T> t) throws IllegalAccessException, InstantiationException {
            T t1 = t.newInstance();
            Field[] fields = t1.getClass().getDeclaredFields();
            for (Field field:fields) {
                if(field.isAnnotationPresent(IniterValue.class)){
                    IniterValue annotation = field.getAnnotation(IniterValue.class);
                    try {
                        field.setAccessible(true);
                        Class<?> type = field.getType();
                        Object obj=null;
                        if(type == Integer.class){
                            obj = Integer.valueOf(annotation.value());
    
                        }
                        if(type==String.class){
                            obj=annotation.value();
                        }
                        field.set(t1,obj);
    
                       // method.invoke(t1,annotation.value(),annotation.intValue());
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                }
            }
            return t1;
    
        }
    }
    

     4、测试

    public class Test {
        public static void main(String[] args) throws InstantiationException, IllegalAccessException {
            User user = UserFactory.create(User.class);
            System.out.println(user.getAge());
        }
    }
    

      

  • 相关阅读:
    WPF
    Xamarin.Forms + Prism,整理页面导航跳转流程
    Xamarin.Forms踩坑整理
    整理
    WPF
    LINQ中,Single()、SingleOrDefault()的解析、示例
    InstallShield打包
    Centos7安装jexus,部署asp.net core,asp.net mvc
    c#修改webConfig的内容
    .net core 3.1简单swagger配置教程
  • 原文地址:https://www.cnblogs.com/liubaihui/p/10762680.html
Copyright © 2011-2022 走看看