什么是Java 注解?绿帽子了解一下

版权声明:本文为徐代龙原创文章,未经徐代龙允许不得转载。网络资源网站:xudailong.cc 福利网站:www.00reso.com 公众号:蛇崽网盘教程资源 https://blog.csdn.net/xudailong_blog/article/details/84296101

什么是Java注解?这个问题打自从第一天接触到Java注解以来,也是一直困扰着我。什么是注解?注解能做什么?

注解在生活中的理解

通过生活中的例子举例,来让大家对注解这个词能够更加深刻的记住它。下面两个例子比较贴切的说明下注解

  1. 例子一:标签
    在超市里面,你会在货架上多多少少的看到有标签的痕迹,有的货架上贴着:粮油、洗发水、水果、大米等等。这些标签就是注解,在不影响货物的同时,能让顾客更好的找到商品,有的标签如:国庆优惠三天、元旦2折起这些标签说明了某类商品的生命周期。这算是注解的一个比较接近生活中贴切的例子了。
  2. 例子二:绿帽子
    举绿帽子这个事,是为了让大家更印象深刻的理解注解。例如生活中,你发现每个人头上都顶了一顶帽子,五花八门、层出不穷。有的顶蓝色的、有的顶紫色的、有的顶黄色的、有的顶绿色的。自从多了一顶帽子,你可能更容易从人群中识别出他是谁?帽子有一定的标志性

可能上面两个例子举得并不是很贴切,小白初学,请大神轻喷。不过注解怎么来的,就好比你为什么叫这个名字一样。在Java中注解就是:Annotation 也叫元数据

正式了解Java注解

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

作用分类:

①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

java注解的编写格式: interface 前加一个**@**就是注解了,如下:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

Java 元注解

在jdk1.5的时候,提供了四种元注解,在java.lang.annotation包中,用来注解其他的注解

@Documented –注解是否将包含在JavaDoc中
@Retention –什么时候使用该注解
@Target? –注解用于什么地方
@Inherited – 是否允许子类继承该注解
@Documented–一个简单的Annotations标记注解,表示是否将注解信息添加在java文档中。
@Retention– 定义该注解的生命周期。
RetentionPolicy.SOURCE – 在编译阶段丢弃。这些注解在编译结束之后就不再有任何意义,所以它们不会写入字节码。
@Override, @SuppressWarnings都属于这类注解。

RetentionPolicy.CLASS – 在类加载的时候丢弃。在字节码文件的处理中有用。注解默认使用这种方式。

RetentionPolicy.RUNTIME– 始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息。
我们自定义的注解通常使用这种方式。
@Target – 表示该注解用于什么地方。如果不明确指出,该注解可以放在任何地方。以下是一些可用的参数。需要说明的是:属性的注解是兼容的,如果你想给7个属性都添加注解,仅仅排除一个属性,那么你需要在定义target包含所有的属性。
public enum ElementType {
    /**标明该注解可以用于类、接口(包括注解类型)或enum声明*/
    TYPE,

    /** 标明该注解可以用于字段(域)声明,包括enum实例 */
    FIELD,

    /** 标明该注解可以用于方法声明 */
    METHOD,

    /** 标明该注解可以用于参数声明 */
    PARAMETER,

    /** 标明注解可以用于构造函数声明 */
    CONSTRUCTOR,

    /** 标明注解可以用于局部变量声明 */
    LOCAL_VARIABLE,

    /** 标明注解可以用于注解声明(应用于另一个注解上)*/
    ANNOTATION_TYPE,

    /** 标明注解可以用于包声明 */
    PACKAGE,

    /**
     * 标明注解可以用于类型参数声明(1.8新加入)
     * @since 1.8
     */
    TYPE_PARAMETER,

    /**
     * 类型使用声明(1.8新加入)
     * @since 1.8
     */
    TYPE_USE
}

@Inherited – 定义该注释和子类的关系

注解支持的数据类型

关于注解支持的元素数据类型除了上述的String,还支持如下数据类型

所有基本类型(int,float,boolean,byte,double,char,long,short)

String

Class

enum

Annotation

上述类型的数组

部分引用:
https://blog.csdn.net/javazejian/article/details/71860633
https://baike.baidu.com/item/Java 注解/4404368?fr=aladdin
http://www.importnew.com/10294.html


个人网站:http://xudailong.cc

关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。

更多资源请访问:

https://blog.csdn.net/xudailong_blog/article/details/78762262

某课视频教程

https://xudailong.cc/2018/09/30/muke-courses/

关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。

在微信后台回复「130个小程序」,即可免费领取享有导入就能跑的微信小程序

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xudailong_blog/article/details/84296101
今日推荐