Java基础 -注解

本文介绍了Java中的内置注解如@Override、@Deprecated和@SuppressWarnings,以及元注解如@Target、@Retention和@Documented。进一步讲解了如何定义和使用自定义注解,包括带参数的注解实例。适合理解注解原理和实践应用者阅读。
摘要由CSDN通过智能技术生成

注解:annotation

观看狂神视频,记录学习笔记

视频地址:【狂神说Java】注解和反射 哔哩哔哩 bilibili

常见的三种内置注解

常见的三种内置注解

  • @Override:方法的重写
  • @Deprecated:标注不推荐使用的程序元素,标注的程序元素可以使用,或者由更好的实现方式(可用于修饰方法,类和属性)
  • @SuppressWarnings(value=""):镇压警告,代码中标黄的警告可以使用该注解使其不再显示警告,需要加参数使用

元注解

元注解用来解释其他注解。
Java定义了四种元注解
image.png

  • @Target:用来描述注解的使用范围(使用在属性上,方法上或是类上等等)
  • @Retention:描述注解的生命周期。
    • 有三种级别:SOURCE - 源代码、CLASS - 编译成class、RUNTIME - 运行的时候。
    • 作用是在三种级别的情况下,注释是否可以使用,是否有效。
    • 基本上都是RUNTIME。
  • @Documented:文注解释,使用该注解可以生成文档注释
  • @Inherited:继承注解,作用是使用该注解可以使得子类可以继承父类的注解
定义一个简单注解
/**
 * Target注解,有一个参数value,value的参数的类型是ElementType的数组,
 * value是个数组,也就是说value可以有多个值,使用大括号括起来
 * ElementType是一个枚举类,有方法,类,接口等的声明
 *
 */
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
// @Documented注解:表示是否将我们的注解生成到JAVAdoc文档中
@Documented
// @Inherited:表示子类可以继承父类的注解
@Inherited
// 注解使用@interface修饰
@interface MyAnnotation {
}

自定义注解

image.png

/**
 * 定义有参数的注解
 */
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{
    // 无参数的注解
}

@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation01 {
    // 注解的参数命名要求: 参数类型 + 参数名();
    String name();
}

@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation02 {

    // 有默认值的注解
    String name() default "";
    int age() default 0;
    int id() default -1; // 如果默认值为-1,代表不存在
    String[] schools() default {"", ""};
    String teacher();
}

@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation03 {

    // 如果参数名为value,这时,调用注解的时候,可以省略参数名
    String value();
}

class test{
    @MyAnnotation()
    @MyAnnotation01(name = "test")
    // 没有默认值的注解必须给参数赋值,有默认值的注解可以不赋值
    @MyAnnotation02(teacher = "test")
    // 如果参数名为value,这时,调用注解的时候,可以省略参数名,只有value可以省略
    @MyAnnotation03( "test")
    public void test(){}
}
自定义注解小结

定义一个简单注解和自定义注解这里,需要注意注解定义的样式和格式要求,这样在看代码的源码时,可以看懂各个注解的作用和使用方法。

  • 注解使用@interface修饰:public @interface xxx(){} 这种格式出现,就应该认识到是一个注解。
  • 注解的参数命名要求: 参数类型 + 参数名();例:String name()。固定格式,注解的参数相当于类的对象,不过要加()结尾。

目前我还处于看懂注解和根据注解提供的参数进行使用的阶段。自定义注解之类的暂时还没有这样的水平。所以这里对于注解的介绍先停留在这里,待到以后技术水平有了提升,再系统的总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值