Java核心知识自定义注解
Posted 烟锁迷城
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java核心知识自定义注解相关的知识,希望对你有一定的参考价值。
1、定义
注解,也叫元数据,是一种代码级别的说明,是JDK1.5之后的一种新引入的特性。
2、作用
- 编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查,如
@Override
重写方法说明 - 编写文档:通过代码里标识的注解生成文档,如生成Doc文档
- 代码分析:通过代码里标识的注解对代码进行分析,如反射
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核心知识自定义注解的主要内容,如果未能解决你的问题,请参考以下文章