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

    一、注解:

    我们可以通过定义注解,使用注解来方便地调用某些数据。

    二、java内建注解:

    比如@override、@deprecated等,重写方法时会使用@override,而当某些类或方法已经被摒弃时则会出现 @deprecated

    三、元注解:

    元注解的作用就是负责注解其他注解。

    包括@Target、@Inherited、@Retention、@Documented

    @Target:表明Annotation的使用范围,包括类、方法、属性等
    @Inherited:表明父类的注解可以被子类继承
    @Retention:指定Annation的存在范围
    @Documented:在生成java doc时可以写入文档说明

    其中,Target范围如下:

    而Retention范围如下:

    四、自定义Annotation
    Annotation用@interface来定义.
    格式如下:
    public @interface Annotation  名称{
        修饰符  数据类型 变量名称();
    }
    也可以在定义时直接用default指定默认值。

    五、解析Annotation

    而想取得Annotation的值,需要使用反射机制。

    解析Annotation的相关api如下所示:

    示例如下:

    MyAnnotation.java

    import java.lang.annotation.Documented;
    import java.lang.annotation.Inherited;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    
    @Inherited
    @Retention(value = RetentionPolicy.RUNTIME)
    @Documented
    public @interface MyAnnotation {
        public String name();
        public String job() default "programer";
    }

    Person.java

    @MyAnnotation(name = "lin")
    public class Person {
    }

    GetAnnotationValue.java

    /**
        通过反射获取Annotations的值
     */
    public class GetAnnotationValue {
        public static void main(String[] args) throws Exception {
            Class<?> c=Class.forName("com.example.annotation.test.Person");
    
            if(c.isAnnotationPresent(MyAnnotation.class)) {
                MyAnnotation annotation=c.getAnnotation(MyAnnotation.class);
                String name=annotation.name();
                String job=annotation.job();
                System.out.println("name:"+name);
                System.out.println("job:"+job);
            }
    
        }
    }

    参考资料:《java开发实战经典》

  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/expiator/p/6872481.html
Copyright © 2011-2022 走看看