zoukankan      html  css  js  c++  java
  • java注解Annotation

    大纲:

    1. 自定义注解
    2. 从注解上获取值

    一、自定义注解

    @Target({ElementType.TYPE,ElementType.FIELD}) //注解作用在哪里,这里是类上和变量上
    @Retention(RetentionPolicy.RUNTIME) //注解生命周期,这里是运行时
    @Inherited //注解的子类和动态代理类也会拥有这个注解
    public @interface MyAnn {
        //默认值value,这个属性名比较特殊@MyAnn("xxx"),这里xxx就是这个value
        String value();
        //注解值有很多(可以是数组,枚举或者其他注解等),还可以设置默认值
        int age() default 0;
        String[] parentsName() default {};
    }

    二、从注解上获取值

     例子中使用到我们上面我们自定义的注解

    @MyAnn(value = "haha",age = 3,parentsName = {"zhangsan","lisi"})
    public class Client {
    
        @MyAnn(value = "hehe",age = 5,parentsName = {"wangwu","zhaoliu"})
        private static String name;
    
        public static void main(String[] args) throws NoSuchFieldException {
            //获取类上的注解
            final Class<Client> clazz = Client.class;
            final MyAnn annotationClass = clazz.getAnnotation(MyAnn.class);
            System.out.println(annotationClass.age());//3
            System.out.println(Arrays.toString(annotationClass.parentsName()));//[zhangsan, lisi]
            System.out.println(annotationClass.value());//haha
    
            //获取成员变量上的注解
            final Field name = clazz.getDeclaredField("name");
            final MyAnn annotationField = name.getAnnotation(MyAnn.class);
    
            System.out.println(annotationField.age());//5
            System.out.println(Arrays.toString(annotationField.parentsName()));//[wangwu, zhaoliu]
            System.out.println(annotationField.value());//hehe
        }
    }

    上例中通过反射拿到class和field,然后获取注解。

    注:注解还可以定义到其他地方,取值的方式和上例类似。

  • 相关阅读:
    KL散度(相对熵)和交叉熵的区别
    将模型从 PyTorch 导出到 ONNX 并使用 ONNX Runtime 运行
    Numpy Boolean Indexing Mask(Numpy 布尔索引掩码 )
    python PIL 图像处理库(Pillow)简介
    YOLO v3 网络结构和源码详解
    PyTorch 下使用 Tensorboard
    Python vars() 函数
    python 的 Tqdm 模块
    Pytorch 中的模式设置:model.eval() 和 model.train()
    Pytorch 中的 zero_grad 使用方法
  • 原文地址:https://www.cnblogs.com/liuboyuan/p/10572661.html
Copyright © 2011-2022 走看看