专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java入门教学注解+自定义注解(java自定义注解实现原理)

temp10 2024-09-27 23:02:16 java教程 10 ℃ 0 评论

介绍

注解(Annotation),也叫元数据,标签。是 JDK 1.5 及以后版本引入的一个特性,与类、接口、枚举是在同一层次。可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明

注解的另一个称呼注释,很容易和 java 的代码注释混淆,是一种代码级别的说明,是给程序看的,可以看成一个标签。有特殊含义,可能执行特定的操作等等。

Java入门教学注解+自定义注解(java自定义注解实现原理)


JDK 四大内置注解

@Override 注解

用于标识方法重写,例如当前类中重写 tostring() 方法;

@Deprecated 注解

用于标识方法已过时;

@SuppressWarings 注解

用于抑制编译器警告,直白地讲就是消除警告线,但编译器里关于警告的信息还在。例如在 Eclipse 中: List listt = null;

@SafeVarargs 注解

抑制堆污染警告(单独警告),直白地讲就是使用泛型和可变参数搭配使用将会产生的编译器警告。可以使用 @SuppressWarnings 消除警告,后来 Java 7 引入了新的注解,就是 @SafeVarargs。


注解的作用

  1. 可以使代码更简洁,逻辑更加清爽
  2. 可以通过注解生产 API 文档
  3. 代码分析,通过代码里的标识的元数据对代码进行分析【使用反射】
  4. 编译检查,通过代码里标识的元数据让编译器能够实现基本的编译检查

自定义注解

语法:

元注解
public @interface 注解名 {
				类型  属性名() [default  默认值];
}

使用:

@注解名(属性名="值")

元注解

元注解的作用就是用于定义其他注解,由 JAVA 为我们提供的,不能更改,从 JAVA 5 开始一共提供了四个注解


@Target

该注解用于描述注解的使用范围,也就是说使用了 @Target 去定义了一个注解,那么就可以决定定义好的注解能用在什么地方;

@Target 的取值使用 ElementType,ElementType 的相关说明可以自己通过 JDK 文档查看,也可以通过查看源码;

1.CONSTRUCTOR:用于描述构造器

2.FIELD:用于描述域

3.LOCAL_VARIABLE:用于描述局部变量

4.METHOD:用于描述方法

5.PACKGE:用于描述包

6.PARAMETER:用于描述参数

7.TYPE:用于描述类、接口(包括注解类型)、enum 声明


@Retention

该注解用于描述注解的生命周期,也就是说这个注解在什么范围内有效,注解的生命周期和三个阶段有关:源代码阶段、CLASS 文件中有效、运行时有效;

@Retention 的取值使用 RetentionPoicy,RetentionPoicy 的相关说明可以通过 JDK 文档查询,也可以通过查看源码

1.SOURCE:在源文件中有效(即源文件保留)

2.CLASS:在 class 文件中有效(即 class 保留)

3.RUNTIME:在运行时有效(即运行时保留)


@Documented

使用 @Documented 定义后的注解,在该注解使用后,如果导出 API 文档,会将该注解相关的信息可以被一些工具文档化(比如:javadoc)


@Inherited

使用 @Inherited 定义的注解具备继承性

假设一个注解在定义时,使用了 @Inherited 然后该注解在一个类上使用,如果这个类有子类,那么通过反射我们可以从该类的子类上获取到同样的注解;


想要一个东西就去买

喜欢一个人就去追

哪怕最后那个东西没有用,喜欢的人没有追到手

都没有关系

人生苦短,及时行乐

你要知道遗憾比失败可怕得多

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表