Java核心知识自定义注解

Posted 烟锁迷城

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java核心知识自定义注解相关的知识,希望对你有一定的参考价值。

1、定义

注解,也叫元数据,是一种代码级别的说明,是JDK1.5之后的一种新引入的特性。

2、作用

  1. 编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查,如@Override重写方法说明
  2. 编写文档:通过代码里标识的注解生成文档,如生成Doc文档
  3. 代码分析:通过代码里标识的注解对代码进行分析,如反射

3、JDK预定义注解

  • @Override:检查该注解标注的方法是否继承自父类或接口
  • @Deprecated:表示注解注释的内容已经过时
  • @SuppressWarnings:压制警告

4、自定义注解

4.1、格式

注解的本质是一个接口,继承java.lang.annotation.Annotation接口。

//元注解
public @Interface 注解名称 {
	//属性列表
}

4.2、属性列表

在注解内的抽象方法的返回值类型如下:

  • 基本数据类型
  • String类型
  • 枚举类型
  • 注解
  • 以上类型的数组

自定义注解使用注意点:

  • 如果定义的属性使用default关键字给属性默认初始值,可以在使用注解时不赋予数值
  • 如果只有一个属性需要赋值,而且该属性的名称是value,那么赋值的时候,value可以省略
  • 数组赋值的时候,值使用[]包裹,如果数组只有一个值,[]可以省略。

4.3、元注解

JDK提供的四种元注解

4.3.1、@Target

@Target,表示当前注解能够作用的位置

  • ElementType.TYPE:可以作用在类上
  • ElementType.METHOD:可以作用在方法上
  • ElementType.FIELD:可以作用在属性上

4.3.2、@Retention

@Retention,表示注解可以保留到的阶段,保留的范围:SOURCE<CLASS<RUNTIME,通常来说,都会使用RUNTIME作为自定义注解范围

  • RetentionPolicy.SOURCE:注解只在代码阶段有效
  • RetentionPolicy.CLASS:注解会被保留到字节码阶段
  • RetentionPolicy.RUNTIME:注解会被保留到运行阶段

4.3.3、@Documented

@Documented,表示注解是否被抽取到JavaDoc api中

4.3.4、@Inherited

@Inherited,表示注解是否可以被子类继承

4.4、具体实现

package com.thread.demo.bool;

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

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

    String name();
    int age();
}

以上是关于Java核心知识自定义注解的主要内容,如果未能解决你的问题,请参考以下文章

Java注解--一张图一案例掌握自定义注解

五月十二号java基础知识点

如何在java web项目中添加自定义注解

Java 基础知识点 笔记总结

深入JAVA注解(Annotation):自定义注解 (转)

Java自定义注解