注解

55 篇文章 0 订阅
37 篇文章 0 订阅

注解

1、概述

  • 定义:注解Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释

  • 作用分类:

    • ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】

    • ② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】

    • ③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

  • 注解的格式:

    @注释名(参数名=参数值,...)

    还可以添加一些参数:@注释名(参数名=参数值,...)

2、内置注解

  • @Override:定义在 java.long.Override 中,此注解只适用于修饰方法,表示一个方法重写超类中的另一个方法。

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

  • @SuppressWarnings:定义在 java.long.SuppressWarnings 中,用来取消显示指定编译器警告

    • 此注解必须加参数才能使用,示例:

      抑制单类型的警告:

      @SuppressWarnings(“unchecked”)

      抑制多类型的警告:

      @SuppressWarnings(value={“unchecked”, “rawtypes”})

      抑制所有类型的警告:

      @SuppressWarnings(“all”)

    • 抑制警告的参数

参数用途
allto suppress all warnings(抑制所有警告)
boxingto suppress warnings relative to boxing/unboxing operations(要抑制与箱/非装箱操作相关的警告)
castto suppress warnings relative to cast operations(为了抑制与强制转换操作相关的警告)
dep-annto suppress warnings relative to deprecated annotation(要抑制相对于弃用注释的警告)
deprecationto suppress warnings relative to deprecation(要抑制相对于弃用的警告)
fallthroughto suppress warnings relative to missing breaks in switch statements(在switch语句中,抑制与缺失中断相关的警告)
finallyto suppress warnings relative to finally block that don’t return(为了抑制警告,相对于最终阻止不返回的警告)
hidingto suppress warnings relative to locals that hide variable(为了抑制本地隐藏变量的警告)
incomplete-switchto suppress warnings relative to missing entries in a switch statement (enum case)(为了在switch语句(enum案例)中抑制相对于缺失条目的警告)
nlsto suppress warnings relative to non-nls string literals(要抑制相对于非nls字符串字面量的警告)
nullto suppress warnings relative to null analysis(为了抑制与null分析相关的警告)
rawtypesto suppress warnings relative to un-specific types when using generics on class params(在类params上使用泛型时,要抑制相对于非特异性类型的警告)
restrictionto suppress warnings relative to usage of discouraged or forbidden references(禁止使用警告或禁止引用的警告)
serialto suppress warnings relative to missing serialVersionUID field for a serializable class(为了一个可串行化的类,为了抑制相对于缺失的serialVersionUID字段的警告)
static-accesso suppress warnings relative to incorrect static access(o抑制与不正确的静态访问相关的警告)
synthetic-accessto suppress warnings relative to unoptimized access from inner classes(相对于内部类的未优化访问,来抑制警告)
uncheckedto suppress warnings relative to unchecked operations(相对于不受约束的操作,抑制警告)
unqualified-field-accessto suppress warnings relative to field access unqualified(为了抑制与现场访问相关的警告)
unusedto suppress warnings relative to unused code(抑制没有使用过代码的警告)
  • 演示:

    • 未抑制警告前:
      在这里插入图片描述

    • 抑制警告后
      在这里插入图片描述

3、 元注解

  • 负责注解其他注解,Java定义了4个标准的meta-annotation类型,它们被用来对其他annotation类型作说明。
  • 这些注解所支持的类可在 java.long.annotation 包中找到。
    • @Target:用于描述注解的适用范围
    • @Retention:用于描述注解的生命周期,表示需要在什么级别保存该注解;(SOURCE < CLASS < RUNTIME)
    • **@Documented:**指示该注解将通过 javadoc 和类似的默认工具进行文档化;
    • @Inherited:指示该注解被自动继承

4、自定义注解

import java.lang.annotation.*;

@MyAnnotation(name = "Test02",id=1)
public class Test02 {
    public static void main(String[] args) {
        test();
    }

    //注解参数有默认值可以不显式赋值,没有默认值必须要显式赋值
    @MyAnnotation(name="test")
    private static void test(){
        System.out.println("MyAnnotation");
    }
}

//描述注解的适用范围
@Target(value={ElementType.METHOD,ElementType.TYPE})

//描述注解的生命周期 SOURCE < CLASS < RUNTIME
@Retention(value=RetentionPolicy.RUNTIME)

@Documented //可以将此注解生成在javadoc文档中
@Inherited  //此注解可被子类继承

//自定义注解格式:@interface 注解名{}
@interface MyAnnotation{
    //定义注解的参数 格式:参数类型 参数名();
    String name();
    int id()default -1;//默认值为 -1
}
  • 如果注解只有一个参数,则参数名一般定义为 value ,在使用该注解时,参数名可以省略不写,直接写值。

    • 例:

    @SuppressWarnings(value="all")等价于@SuppressWarnings("all")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值