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开发实战经典》

  • 相关阅读:
    [JAVA安全机制]Java虚拟机-保险沙箱
    计算机网络自顶向下方法第3章-传输层 (Transport Layer).1
    Python基础:一起来面向对象 (二) 之搜索引擎
    Python基础:一起来面向对象 (一)
    计算机网络自顶向下方法第2章-应用层(application-layer).2
    Python基础:lambda 匿名函数
    Python基础:自定义函数
    Python基础:异常处理
    Python基础:条件与循环
    计算机网络自顶向下方法第2章-应用层(application-layer).1
  • 原文地址:https://www.cnblogs.com/expiator/p/6872481.html
Copyright © 2011-2022 走看看