Java 注解学习

使用注解的好处

  • 完整地描述不能用 Java 传达的信息
  • 存储有关程序的额外的信息,供编译器测试和验证
  • 可生成描述符文件或新的类的定义,减轻编写“样本”的负担
  • 使代码更简洁易读,提供编译器类型检查

定义注解

定义注解时,用到的元注解:

  • @Target
    定义注解用于何处(一个方法 METHOD 或一个域 FIELD …)
  • @Retention
    定义注解在哪一级别使用(源码级 SOURCE 或类文件 CLASS 或运行时 RUNTIME)

定义注解像是在定义接口。

不同的是注解中,一般会包含一些元素表示某些值,并且你可以为它指定默认值。

使用注解时,表现为名-值对的形式。

举个例子

你是一名项目经理。你想要在项目开发过程中实时把握进度。于是,你想到了使用注解。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase{
    int id();
    String description() default "no description";
}

你使用的 UseCase 注解中 id 表示开发的进展到哪一步,description 表示对被标注的方法进行说明。

/**
 * @program: annotation
 * @description: 学习注解的代码
 * @author: Leet
 * @create: 2020-10-11 21:32
 **/
public class PasswordUtils {
    
    @UseCase(id = 47, description = "Password must contain at least one numeric")
    public boolean validatePassword(String password){
        return password.matches("\\w*\\d\\w*");
    }

    @UseCase(id = 48)
    public String encryptPassword(String password){
        return new StringBuffer(password).reverse().toString();
    }
}

元注解

Java 目前支持四种元注解:

说明参数
@Target表示注解用于何处CONSTRUCTOR、FIELD、LOCAL_VARIABLE、METHOD、PACKAGE、PARAMTER、TYPE
@Retention表示注解在哪一级使用源码级 SOURCE 、类文件 CLASS 、运行时 RUNTIME
@Document将此注解包含 Javadoc 中
@Inherited表示注解可继承

Java 目前支持的三种标准注解:

@Override@Deprecated@SuppressWarnings

注解元素

注解元素可用类型:

  • 所有基本类型
  • String
  • Class
  • enum
  • Annotation
  • 以上类型的数组

编译器对于注解中元素尤其很苛刻:编译时,元素都要有值。

那么这就要求,元素要么有默认值(null 不能作为使用),要么在使用注解时为元素提供值。

也就是说,每个注解的声明中,每个元素都存在,且都有相应的值。

补充

注解不支持(现行版)继承。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值