注解与自定义注解

注解的作用

  • 在jdk1.5版本添加的特性,当项目特别庞大,配置文件很复杂,本来可能需要很多配置文件,需要很多逻辑才可以实现的内容,可以使用一个或者多个注解来替代,这样可以简化编程,代码更加清晰。

注解种类

  • 注解按照来源分为三类

    JDK注解
    第三方注解
    自定义注解

  • jdk注解
    • jdk注解也有三类,分别为:@Override, @Deprecated, @SuppressWarnings(“deprecation”)
    • 第一种:@Override

      用来标记这是一个重写方法,若此方法并非重写方法,会在编译期报错。

    • 第二种:@Deprecated

      用来标记这是一个过时方法,会在使用此方法时为此方法加上一条横线。

    • 第二种:@SuppressWarnings(“deprecation”)

      用来去除警告
      在这里插入图片描述

  • 第三方注解(暂不讨论)

自定义注解

  • 使用@interface 注解名称 来申明一个注解

    通过反编译工具可以看到,
    public @interface MyAnnotation {}
    反编译后为
    public interface MyAnnotation extends Annotation{}
    注意:
    jdk规定,反编译后的这种形式,不能用来定义注解

  • 代码演示如下
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface MyAnnotation {
	String desc();
	String author();
	int age() default 18;
}
  • 注解的注解属性

    注解本质上是一个接口
    可以有变量和方法
    但接口中的属性是public static final修饰的,在注解中没有意义。
    故:在注解中,我们经常使用的是方法。而此接口中的方法在注解中,称为注解属性
    上面代码演示中 int age() default 18; 就是一个 注解属性

  • 注解属性类型

    • 基本类型
    • String类型
    • Class类型
    • 注解类型
    • 一维数组类型
    • 枚举类型
  • 注解的使用

    • 定义注解属性时可以给注解赋默认值,用default关键字。
    • 定义的注解属性若没有default默认值,则,在引用注解时,必须给此注解属性赋值。
    • 如果有多个注解属性,都需要赋值,用”,“分隔。
    • 当注解属性的属性名为"value", 且此注解只有这个注解属性需要赋值,在赋值时可以省略注解名,直接写入注解值即可。 其他情况,即使注解名为value,也需要带上注解名赋值。
  • 元注解

    • 元注解有四个,如下,我们一一介绍

      @Retention
      @Target
      @Documented
      @Inherited
      其中,@Retention和@Target是自定义注解时,必须使用的两个元注解

    • 第一个:@Retention

      指定注解信息在那个阶段存在
      值域:可以多个值同时存在。
      1. Source :编译期有效
      2. Class :解释执行时有效(.class文件加载到jvm虚拟机时)
      3. Runtime :运行期有效

    • 第二个:@Target

      指定注解用来修饰什么的。
      如:修饰类还是修饰方法等
      值域:ElementType.枚举常量 常量值域如下表:
      在这里插入图片描述

    • 第三个:@Documented

      使用该元注解修饰,该注解信息会生成javadoc文档中。

    • 第四个:@Inherited

      使用该元注解修饰,应用注解目标类的子类会自动继承该注解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值