【java】java注解(@Annotation)

概念描述:

  • 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. 属性名需要赋值(默认赋值的话就不用)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wL魔法师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值