javase 13 注解

本文介绍了Java注解相关知识。注解是Java 1.5引入的元数据,可在编译期或运行期有效。其作用包括编译检查、反射使用、生成文档等,能替代配置文件。还阐述了注解原理,介绍了JDK注解、第三方注解,以及自定义注解的入门和元注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

13 注解

注解的定义

​ 注解是Java 1.5 引入的,目前已被广泛应用于各种Java框架,如Hibernate,Jersey,Spring。注解相当于是一种嵌入在程序中的 元数据 ,可以使用注解解析工具或编译器对其进行解析,也可以指定注解在编译期或运行期有效。在注解诞生之前,程序的元数据存在的形式仅限于java注释或javadoc,但注解可以提供更多功能,它不仅包含元数据,还能作用于运行期,注解解析器能够使用注解决定处理流程。Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和任何元数据 (metadata)的途径和方法。Annotation是一个接口,程序可以通过反射来获取指定程序元素的Annotation对象,然后通过Annotation对象来获取注解里面的元数据。注解API非常强大,被广泛应用于各种Java框架。

注解的作用

1,编译检查

​ Annotation具有“让编译器进行编译检查的作用”。,例如,@SuppressWarnings, @Deprecated和@Override都具有编译检查作用。

2,在反射中使用Annotation

​ 在反射的Class, Method, Field等函数中,有许多于Annotation相关接口。这也意味着,我们可以在反射中解析并使用Annotation。

3,根据Annotation生成帮助文档

​ 通过给Annotation注解加上@Documented标签,能使该Annotation标签出现在javadoc中。

4,能够帮忙查看查看代码

​ 通过@Override, @Deprecated等,我们能很方便的了解程序的大致结构。另外,我们也可以通过自定义Annotation来实现一些功能。

5,注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。

6,在框架中的作用

​ 在开发Java程序,尤其是Java EE应用的时候,总是免不了与各种配置文件打交道。

​ 以Java EE中典型的S(pring)S(truts)H(ibernate)架构来说,Spring、Struts和Hibernate这三个框架都有自己的XML格式的配置文件。这些配置文件需要与Java源代码保存同步,否则的话就可能出现错误。而且这些错误有可能到了运行时刻才被发现。把同一份信息保存在两个地方,总是个坏的主意。理想的情况是在一个地方维护这些信息就好了。其它部分所需的信息则通过自动的方式来生成。JDK 5中引入了源代码中的注解(annotation)这一机制。

​ 注解使得Java源代码中不但可以包含功能性的实现代码,还可以添加元数据。注解的功能类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。Java注解已经在很多框架中得到了广泛的使用,用来简化程序中的配置。
因为注解大多都有自己的配置参数,而配置参数以名值对的方式出现,所以从某种角度来说,可以把注解看成是一个XML元素,该元素可以有不同的预定义的属性。而属性的值是可以在声明该元素的时候自行指定的。在代码中使用注解,就相当于把一部分元数据从XML文件移到了代码本身之中,在一个地方管理和维护。

​ 上面两段话其实已经阐述了java注解的主要作用之一,就是跟踪代码依赖性,实现替代配置文件功能。比较常见的是Spring等框架中的基于注解配置。现在的框架很多都使用了这种方式来减少配置文件的数量。基本上秉持着这么一个原则,与具体场景相关的配置应该使用注解的方式与数据关联,与具体场景无关的配置放于配置文件中。在另一方面我们还可以在通过设置注解的@Retention 级别在运行时使用反射对不同的注解进行处理。

注解的原理

​ 注解 注解就相当于标记然后后期再做出一些操作,实现自动化一些配置,或生产一些文件。按照给出模式套路,注解就相当于快捷键,省略了一些重复操作。

定义规则,自动化实现一些结构,自动补全。

注解的使用

jdk注解
形式作用
@Override 重写标记重写方法
@Deprecated 过时标记过时方法
@SuppressWarnings(“某种警告”)标记忽略警告
第三方注解
SpringMVC
Spring
MyBatis
形式作用
@Select
@Results
@Result
@Delete
@Param
@RestultMap
@Insert
@SelectKey
@Update

注解自定义

自己定义的注解,让别人去使用,完整的注解分两块,一块是注解的定义,与之配套的会有相应的解析器。对我们而言,就是使用注解,能看懂别人的注解即可。学习自定义注解就是以后看到一个注解能够使用。

简单入门

@interface:用来声明一个注解。注解类里的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型。可以通过default来声明参数的默认值。

@interface Simple{ 
	//注解形式
    //注解值
}
元注解

元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的 meta-annotation 类型,它们被用来提供对其
它 annotation类型作说明。Java5.0定义的元注解有四个,这些类型和它们所支持的类在java.lang.annotation包中可以找到。

元注解解释
@Target 目标,靶子
此注解只能用在方法上
@Target(ElementType.METHOD)
描述注解的使用范围
CONSTRUCTOR:用于描述构造器
FIELD:用于描述域
LOCAL_VARIABLE:用于描述局部变量
METHOD:用于描述方法
PACKAGE:用于描述包
PARAMETER:用于描述参数
TYPE:用于描述类、接口(包括注解类型) 或enum声明
@Retention
@Retention(RetentionPolicy.RUNTIME)
用于描述注解的生命周期
SOURCE:在源文件中有效(即源文件保留)
CLASS:在class文件中有效(即class保留)
RUNTIME:在运行时有效(即运行时保留)
@Documented被javadoc或类似工具文档化,
它应用于类型声明,类型声明的注解会影响客户端对注
解元素的使用。
@Inherited表示一个注解类型会被自动继承,如果用户在类声明的
时候查询注解类型,同时类声明中也没有这个类型的注
解,那么注解类型会自动查询该类的父类,这个过程将
会不停地重复,直到该类型的注解被找到为止,或是到
达类结构的顶层(Object)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值