java注解(@Annotation)

2022-06-30 11:19:43

概念描述:

  • JDK1.5 之后的新特性
  • 用来说明程序的
  • 使用注解:@注解名称

分类:

  • 编写文档:通过代码里表示的注解生成文档【生成文档doc文档】
  • 代码分析:通过代码里表示的注解对代码进行分析【使用反射】
  • 编译检查:通过代码里表示的注解让编译器能够实现基本的编译检查【Override】

JDK中预定义的一些注解:

  • @Override: 检测被该注解标注的方法是否是继承自父类(接口)的
  • @Deprecated:该注解标注的内容,表示已经过时
  • @SupperessWarnings:压制警告,一般传递参数all @SuppressWarnings("all")

自定义注解:

自定义注解分为两部分,元注解与属性。注解本质上是一个继承Annotation的接口

如:

public interface XXX extends java.lang.annotation.Annotation{ }

元注解

用于描述注解的注解

  • @Target:描述注解能够作用的位置

  • @Retention:描述注解被保留的阶段

  • @Documented:描述注解是否被抽取到api文档中

  • @Repeatable:它表示在同一个位置重复相同的注解

@Target

标记这个注解应该是哪种 Java 成员

@Retention

描述注解被保留的阶段

@Documented

描述注解是否被抽取到api文档中

在方法上加了注解后,通过javadoc 命令进行编译,生成的java-api文档也是有注解的。

@Inherited

描述注解是否被子类继承

 @Repeatable

元注解@Repeatable是JDK1.8新加入的,它表示在同一个位置重复相同的注解。在没有该注解前,一般是无法在同一个类型上使用相同的注解的。

import java.lang.annotation.*;

//使用Java8新增@Repeatable原注解
@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(FilterPaths.class)//参数指明接收的注解class
public @interface FilterPath {
    String  value();
}

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface FilterPaths {
    FilterPath[] value();
}

//使用案例
@FilterPath("/web/update")
@FilterPath("/web/add")
@FilterPath("/web/delete")
class AA{ }

属性

1. 属性的返回值类型(基本数据类型,String,枚举,注解,以上类型的数组)

 2. 属性名需要赋值(默认赋值的话就不用)

  • 作者:wL魔法师
  • 原文链接:https://blog.csdn.net/qq_33000453/article/details/118075059
    更新时间:2022-06-30 11:19:43