zoukankan      html  css  js  c++  java
  • 有关于注解

      JDK1.5 之后的系统中,内建了3个注解(Annotation)

      1、@Override:表示覆写操作,这个注解在子类重写父类的方法的时候可以用到,也就是重写。在我现阶段的开发中这个注解是用的次数最多的;

      2、@Deprecated:注解表示不建议使用的操作。这个注解写上去以后,是为了告诉调用这个方法的人,最好不好调用这个方法了,因为这个方法已经过时了,以后可能要把这个方法去掉;

      3、@SuppressWarnings:表示压制警告。在平时开发的过程中,我们经常会在代码中出现一些黄色线条标志的代码,而那些代码就是警告,我的项目经理和我说,作为一个合格的程序员,在代码中最好是不要出现黄线,这个注解就是告诉编译器,这块警告我知道了,不要显示出来了。

      但是在我们日常的工作中,很大一部分注解都是自定义的,包括很多框架中使用到的注解。

    package AnnotationDemo;

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;

    @Target(value={ElementType.METHOD,ElementType.TYPE})
    @Retention(value=RetentionPolicy.RUNTIME)
    public @interface AnnotationTestDemo02 {
        public String username() default "QQ";
    }

      上面这行代码中,@interface自定义注解。自定义注解默认是继承自java.lang.annotation.Annotation。其中上面@Target、@Retention是元注解,也就是java本身提供的专门用于注解自定义注解的注解。

      @Target注解:表明了该注解的使用对象,主要包括以下几种:

        1、只能在Annotation中出现:public static final ElementType ANNOTATION_TYPE;

        2、只能在构造方法中出现:public static final ElementType CONSTRUCTOR;

        3、本地变量上使用:public static final ElementType LOCAL_VARIABLE;

        4、只能在方法上使用:public static final ElementType METHOD;

        5、在参数声明上使用:public static final ElementType PARAMETER;

        6、在包的声明上使用:public static final ElementType PACKAGE;

        7、只能在类或接口上使用:public static final ElementType TYPE;

      @Retention:表示注解存在的范围,会有以下几种情况

        1、public static final RetentionPolicy SOURCE :只在源码中起作用,最典型的注解就是@Override,这个覆写注解仅仅存在于源码中,为编译器使用。

        2、public static final RetentionPolicy CLASS:只在编译之后的class中起作用。

        3、public static final RetentionPolicy RUNTIME:在运行的时候起作用。

      如果一个Annotation想要起作用的话,必须使用RUNTIME范围。以下是四种元注解

      1. Documented 指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。
      2. Inherited 指示注释类型被自动继承。
      3. Retention 指示注释类型的注释要保留多久。
      4. Target 指示注释类型所适用的程序元素的种类。

      还有一点就是注解是通过反射来实现的。

  • 相关阅读:
    Python 函数装饰器简明教程
    *arg和**kwarg的区别
    克里金插值
    C语言Hello world
    ibatis错误
    typealias
    视图
    权限分级设置
    走出浮躁的泥沼:学会享受学习过程的乐趣
    R语言 eval(quote(x)) 和 eval(x)
  • 原文地址:https://www.cnblogs.com/hongcong/p/5792188.html
Copyright © 2011-2022 走看看