java注解(作用于注解)

简介: java注解(作用于注解)

注解是什么


在Java中是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。

在java中基本类型几个注解,也成为元注解


元注解


@Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。

@Documented - 标记这些注解是否包含在用户文档中。

@Target - 标记这个注解应该是哪种 Java 成员。

@Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)

这几个注解是作用到注解上的。所以也称为元注解

不同的注解作用的位置不一样,今天只介绍其中一部分

这几个是jdk自带的注解


如何使用


那么我们该如何使用注解呢?

@interface 是我们开发人员使用的自定义注解时用到的关键字为了区分接口所以在前面加了一个@符号,那么结合上面所说的元注解,应用到我们自定义的注解上。以这种形式编写格式如下

@Documented //表示当前这个注解生成文档doc文档
@Target(ElementType.TYPE)//当前这个注解只能作用于类
@Retention(RetentionPolicy.RUNTIME)//当前这个注解在什么范围下可用,当前这个
public @interface MyAnnotation1 {
}

可以看到这个MyAnnotation1注解上面有三个注解,是我们上面说的元注解,那我们使用自己写的注解该如何使用呢?

可以看到我们把注解用到了方法上它显示出了红线,这就是我们用到的

@Target(ElementType.TYPE)//当前这个注解只能作用于类

这个元注解的作用,它限定了你的自定义注解可以作用于什么地方。

现在我们在@Target(ElementType.TYPE)中再添加一个新的ElementType.METHOD,再看我们这个注解就不会报错了,因为TYPE表示的时当前这个注解只能作用于类,当我们添加了METHOD后他的范围就包括了方法



现在我们将@Retention(RetentionPolicy.RUNTIME)这里修改为@Retention(RetentionPolicy.CLASS)标识着这个注解会保存在哪里,这里我们保存到类文件中,这里我们做一个对比首先RetentionPolicy.CLASS和RetentionPolicy.SOURCE的区别,第一个是保存到类中第二个是只在代码中

可以通过看他们生成class文件做出对比

使用RetentionPolicy.SOURCE了

使用RetentionPolicy.CLASS

而在上面一开始使用的RetentionPolicy.RUNTIME这个关键标识,是可以在运行时通过Java中反射来获取注解以及注解中的内容。也就是说它的存活时间更长。

通过以上这两个元注解的使用我们可以看到,这几个元注解的作用是来限定我们自定义的注解的

关于@Documented这个生成dos文件的注解大家可以下去自己实际验证一下。

现在这只是一部分的注解作用,后续会把其他注解一些内容进行一个整理

相关文章
|
5天前
|
缓存 算法 Java
Java面试题:深入探究Java内存模型与垃圾回收机制,Java中的引用类型在内存管理和垃圾回收中的作用,Java中的finalize方法及其在垃圾回收中的作用,哪种策略能够提高垃圾回收的效率
Java面试题:深入探究Java内存模型与垃圾回收机制,Java中的引用类型在内存管理和垃圾回收中的作用,Java中的finalize方法及其在垃圾回收中的作用,哪种策略能够提高垃圾回收的效率
12 1
|
5天前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
11 0
|
4天前
|
存储 运维 Java
Java面试题:JVM的内存结构有哪些主要部分?请简述每个部分的作用
Java面试题:JVM的内存结构有哪些主要部分?请简述每个部分的作用
26 9
|
4天前
|
缓存 安全 Java
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
19 4
|
10天前
|
Java 编译器 API
Java注解
Java注解
18 10
|
7天前
|
Java Spring
使用Java实现自定义注解的方法与技巧
使用Java实现自定义注解的方法与技巧
|
4天前
|
Java API
Java面试题:说明Lambda表达式在Java中的应用,以及函数式接口的概念和作用。
Java面试题:说明Lambda表达式在Java中的应用,以及函数式接口的概念和作用。
11 0
|
5天前
|
Java 编译器 数据库连接
Java面试题:什么是Java中的注解以及如何自定义注解?举例说明注解的经典用法
Java面试题:什么是Java中的注解以及如何自定义注解?举例说明注解的经典用法
8 0
|
5天前
|
druid Java 数据库连接
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
12 0
|
5天前
|
Java 应用服务中间件 持续交付
Java面试题:简述Docker等容器化技术的原理及其在Java应用部署中的作用。
Java面试题:简述Docker等容器化技术的原理及其在Java应用部署中的作用。
11 0