博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【spring 注解】第1篇:Java基础注解学习
阅读量:6295 次
发布时间:2019-06-22

本文共 1937 字,大约阅读时间需要 6 分钟。

注解是什么

注解的定义

Java注解通过@interface关键字定义

public @interface MyAnnotation {}

那么注解到底是个什么东西呢?在日常生活中,往往会给关系要好的朋友起一个昵称或者绰号,比如说雷军,网络上尊称雷布斯,可以理解为雷布斯就是雷军的一个标签,并且雷布斯这个标签有特定的含义。那么注解在我们的java代码中就起到了一个标签的作用。

注解的属性

注解的属性也叫做成员变量。注解有且只有成员变量。注解的成员变量在注解的定义中以“无形参的方法”形式来声明,其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型。但是在注解中定义属性时它的类型必须是 Java 基本数据类型、类、接口、注解及它们的数组

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation {    int id();    String info();}

在使用注解时可以重复为注解属性赋新值,如下:

@MyAnnotation(id = 1,info = "hello annotation")public class AnnoDemo {}

注解属性可以有自己的默认值,使用default关键字声明;

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation {    int id() default 0;    String info() default "";}

另外如果注解在声明时使用了value作为属性名称,应用这个注解时可以直接将属性值填写到括号内。

@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Rename {    String value();}

上面带有value属性的注解可以这样使用:

@MyAnnotation(id = 1,info = "hello annotation")public class AnnoDemo {    @Rename("hello")    private String name;}

元注解

在介绍注解属性的时候,我们已经开始使用了部分注解,比如@Target@Retention,这些东西是什么呢?我们称之为元注解。

元注解是什么

元注解是一种特殊的注解,它能够应用到其它的普通注解上面,目的就是给其他普通的注解进行解释说明。

元注解的类型

  • @Retention:当一个普通注解被@Retention注解标识时,它限定了这个普通注解的生命周期。

    1. RetentionPolicy.SOURCE: Java源码期起作用,编译期被丢弃;
    2. RetentionPolicy.CLASS: 只在编译期起作用,单不会被加载到JVM中;
    3. RetentionPolicy.RUNTIME: 它会被加载进入到JVM中,在Java程序运行的生命周期中都起作用;
  • @Target:当一个普通注解被@Target注解标识时,这个普通注解就被限定了在那些地方起作用。比如被限定只在java的类上起作用、或者方法上起作用。

    1. ElementType.TYPE: 对注解、类、接口、枚举进行注解;
    2. ElementType.FIELD: 对属性进行注解;
    3. ElementType.METHOD: 对方法进行注解;
    4. ElementType.PARAMETER: 对形参进行注解;
    5. ElementType.CONSTRUCTOR: 对构造器进行注解;
    6. ElementType.LOCAL_VARIABLE: 对局部变量进行注解;
    7. ElementType.ANNOTATION_TYPE: 对注解进行注解;
    8. ElementType.PACKAGE: 对一个包进行注解;
    9. ElementType.TYPE_PARAMETER: 对引用类型参数注解(JDK1.8新增);
    10. ElementType.TYPE_USE: 对类型进行注解(JDK1.8新增);
  • @Documented: 说明该注解将被包含在javadoc中。
  • @Inherited: 如果一个父类被@Inherited修饰过的注解进行注解的话,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了父类的注解。
  • @Repeatable: 被@Repeatable修饰的注解可以重复使用。

注解的应用场景

转载地址:http://esvta.baihongyu.com/

你可能感兴趣的文章
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>
embedded linux学习中几个需要明确的概念
查看>>
mysql常用语法
查看>>
Morris ajax
查看>>