java-自定义注解

java-注解

1 注解

1.1 什么是注解

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制

1.2 注解的作用

Annotation 是一个辅助类,它在 Junit、Struts、Spring 等工具框架中被广泛使用

(1)编译检查

Annotation 具有"让编译器进行编译检查的作用"

(2) 在反射中使用 Annotation

在反射的 Class, Method, Field 等函数中,有许多于 Annotation 相关的接口

(3) 根据 Annotation 生成帮助文档

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

(4) 能够帮忙查看代码

通过 @Override, @Deprecated 等,我们能很方便的了解程序的大致结构

1.3 注解的格式

注解是以“@注释名”在代码中存在的,还可以添加一些参数的值,例如:

@SupperessWarning(value=“unchecked”)

1.4 注解在哪里用

Java 语言中的类、方法、变量、参数和包等都可以被注解标注

2 内置注解

2.1 @Override

定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法的声明,打算重写超类中的另一个方法的声明

@Target(value=METHOD)
 @Retention(value=SOURCE)
public @interface Override

表示方法声明旨在覆盖超类型中的方法声明。 如果使用此注释类型注释方法,则除非至少满足以下条件之一,否则需要编译器生成错误消息:

  • 该方法将覆盖或实现在超类型中声明的方法。

  • 该方法具有与Object中声明的任何公共方法的覆盖相同的签名

  • 从以下版本开始:

    jdk 1.5

2.2 @Deprecated

定义在java.lang.Deprecated,此注释可以用于修辞方法,属性,类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或者存在更好的选择

@Documented
 @Retention(value=RUNTIME)
 @Target(value={CONSTRUCTOR,字段,LOCAL_VARIABLE,METHOD,PACKAGE,PARAMETER,TYPE})
public @interface 已过时的

注释@Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它是危险的,或者因为存在更好的替代方法。 编译器在不被弃用的代码中使用或覆盖不推荐使用的程序元素时发出警告。

  • 从以下版本开始:

    1.5

  • See The Java™ Language Specification:

    9.6.3.6 @已淘汰

2.3 @SupperssWarnings

定义在java.lang.SupperssWarnings中,用来抑制编译时的警告信息

  • 与前两个注解不同,你需要添加一个参数才能正确使用,这些参数都是已经第一好的了,我们选择使用就行

  • @SupperssWarnings(“all”)

  • @SupperssWarnings(“unchecked”)

  • @SupperssWarnings(value = {“unchecked”,“deprecation”})

  • and so on … …

3 元注解

3.1 元注解的作用

负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们被用来提供对其他annotation类型作说明

这些类型和它们所支持的类在java.lang.annotation包中可以找到

​ @Target:用于描述注解的使用范围

​ @Retention:需要在什么级别保存该注释信息,用于描述注解的声明周期 SOURCE < CLASS < RUNTIME

​ @Documented:说明该注解将被包含在Javadoc中

​ @Inherited:说明子类可以继承父类中的该注解

4 自定义注解

使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口

  • @interface用来声明一个注解,格式public @interface 注解名 {定义内容}
  • 每一个方法实际上是声明了一个配置参数
  • 方法的名称就是参数的名称
  • 返回值类型就是参数的类型(返回值只能是Class、String、enum)
  • 可以通过default来声明参数的默认值
  • 如果只有一个参数成员,一般参数名为value
  • 注解元素必须要有值,定义注解元素时,经常使用空字符串,0作为默认值
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author:zhangsann__6
 * @Description:
 * @date:2021/8/17 22:46
 */
public class Test03 {
    @MyAnnotation02(name = "可怜小张", id = 10086)
    public static void main(String[] args) {
        
    }
    
}

@SuppressWarnings("all")
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation02{
    //注解参数格式
    //参数类型 + 参数名();
    //参数类型 + 参数名() default xx;
    String name();
    int id() default 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值