【Java】注解

本文介绍了Java注解的使用,包括编译器使用的注解如@Override、@Deprecated和@SuppressWarnings,以及如何定义注解和设置元注解。还讨论了注解的处理,通过反射API读取注解的方法,并提供了一个自定义注解@LengthCheck的例子,展示了如何结合注解实现字段长度检查的逻辑。
摘要由CSDN通过智能技术生成

Java注解

使用注解

编译器可以使用的注解:

  • @Override:让编译器检查该方法是否正确地实现了覆写
  • @Deprecated:告诉编译器该方法已经被标记为“作废”,引用它会提示横线 p.hello()
  • @SuppressWarnings:让编译器忽略某些警告

定义注解

注解的参数类似于无参方法,可以用default设定一个默认值。最常用的参数应命名为value

元注解:可以修饰其他注解的注解

  • @Target:定义Annotation可以被应用于源码的哪些位置(最常用)

    • 类或接口:ElementType.TYPE
    • 字段:ElementType.FIELD
    • 方法:ElementType.METHOD
    • 构造方法:ElementType.CONSTRUCTOR
    • 方法参数:ElementType.PARAMETER
    @Target({
         
            ElementType.METHOD,
            ElementType.FIELD
    })
    @interface Age{
         
        int value() default 18;
    }
    
  • @Retention:定义Annotation的生命周期

    • RetentionPolicy.SOURCE: 在编译期就被丢掉了
    • RetentionPolicy.CLASS: 仅保存在class文件中,它们不会被加载进JVM (默认)
    • **RetentionPolicy.RUNTIME: 会被加载进JVM,并且在运行期可以被程序读取 **

通常我们自定义的Annotation都是RUNTIME,所以务必要加上:

@Retention(RetentionPolicy.RUNTIME)
  • @Repeatable: 定义Annotation是否可重复(用的很少)

经过@Repeatable修饰后,在某个类型声明处,就可以添加多个@Report注解

  • @Inherited: 定义子类是否可继承父类定义的Annotation

定义Annotation的步骤:

  1. @interface定义注解
@interface Age{
   
}
  1. 添加参数、默认值

把最常用的参数定义为value()ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值