一. 理解Java注解
注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy1。通过代理对象调用自定义注解(接口)的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。
实际上Java注解与普通修饰符(public、static、void等)的使用方式并没有多大区别,下面的例子是常见的注解
通过在方法上使用@Test注解后,在运行该方法时,测试框架会自动识别该方法并单独调用,@Test实际上是一种标记注解,起标记作用,运行时告诉测试框架该方法为测试方法。而对于@Deprecated和@SuppressWarnings(“uncheck”),则是Java本身内置的注解,在代码中,可以经常看见它们,但这并不是一件好事,毕竟当方法或是类上面有@Deprecated注解时,说明该方法或是类都已经过期不建议再用,@SuppressWarnings 则表示忽略指定警告,比如@SuppressWarnings(“uncheck”),这就是注解的最简单的使用方式,那么下面我们就来看看注解定义的基本语法
二. 基本语法
声明注解与元注解
我们先来看看前面的Test注解是如何声明的:
三. 注解支持的数据类型
所有基本类型(int,float,boolean,byte,double,char,long,short)
String
Class (如:Class 或 Class
四. 获取类级注解
五. 获取方法注解
Original: https://www.cnblogs.com/mrhgw/p/10524548.html
Author: 有容乃大
Title: 理解Java注解类型
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539298/
转载文章受原作者版权保护。转载请注明原作者出处!