Java的注解

2022-09-08 13:11:38 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

一、注解的概念:

注解并不是一开始就有的,JDK5之前是没有注解的,JDK5及其以后JDK版本才开始支持Java注解!

Java注解(Annotation)也叫做元数据,以@注解名在代码中存在,它是一种在源代码中标注的特殊标记,可以标注源代码中的类、属性、方法、参数等代码,主要用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。

1.1 Java注解按照含有参数的个数分为三种:
  • 不带参数,语法结构为:@Annotation,例如@FunctionalInterface;
  • 带一个参数的注解,语法结构为:@Annotation(参数);
  • 带多个参数的注解,语法结构为:@Annotation(参数1,参数2,参数3…)。
1.2 内置注解
  1. @Override被用于标注方法,用于说明所标注的方法是重写父类的方法;
  2. @Deprecated用于说明所标注元素(成员变量或方法)因存在安全问题或有更好选择而不鼓励使用,如果强制使用,则编译器会发出警告:
  1. @SuppressWarnings用于取消编译器所显示的警告:

二、自定义注解

2.1 注解的语法结构:
代码语言:javascript复制
[public] @interface 注解名{ 
   
	[属性1;]
	[属性2;]
	...
	[属性n;]
}
2.2 属性的语法结构:
代码语言:javascript复制
数据类型 属性名() [default 默认属性值];
2.3 示例:
代码语言:javascript复制
public @interface Autowried { 
   
    String value() default "";
}

注意:

  1. 如果注解属性没有默认值,则使用该注解时必须指定值(否则会报错):

如果注解属性有默认值,则使用时@Autowried()@Autowried都对。

  1. 如果注解属性名为value,且只有它一个属性时,使用该注解可以直接赋值,即@Autowried("") 等价于 @Autowried(value = "")
  2. 如果注解属性的数据类型为数组类型,赋多个值时必须使用{}括起来;但若只赋一个值时,则无需使用{}

三、元注解

元注解是Java语言中用于修饰自定义注解的注解,常用的元注解有:@Target@Retention@Documented@Inherited@Repeatable,其中@Repeatable是JDK8.0新添加的元注解。

3.1 @Target:用于指定被修饰的自定义注解只能用于修饰程序中哪些元素,该元素有如下属性值:
  1. ElementType.ANNOTATION_TYPE:应用于其他注解的元注解;
  2. ElementType.CONSTRUCTOR:应用于构造函数;
  3. ElementType.FIELD:应用于全局属性
  4. ElementType.LOCAL_VARIABLE:应用于方法中的本地变量;
  5. ElementType.METHOD:应用于方法
  6. ElementType.PACKAGE:应用于包;
  7. ElementType.PARAMETER:应用于方法的参数
  8. ElementType.TYPE:应用于类、接口或者枚举声明

示例:

0 人点赞