Java如何自定义注解,元数据到底是什么?

一.Java注解是什么东西?为什么要用?

  1. 网上的理解:Java注解其实就是写在接口、类、属性、方法上的一个标签,或者说是一个特殊形式的注释,与普通注释不同 普通注释只是一个注释 而注解在代码运行时是可以被反射获取并操作的,如果没有使用反射或者其他检查 那么注解是没有真实作用的,也不会影响程序正常运行结果
  2. 我的理解:简单来说Java注解可以说是一个标识,当你看到这个注解 你就知道它是干什么的 比如@Override 你就知道他是重写方法的标识,且它可以通过反射获取并操作的 如果没有使用到注解 也不会影响程序正常运行
  3. 为什么要用呢?两个字“方便”

二.元数据到底是什么?(插播一下元数据概念)

  1. Java注解是提供了一种为数据设置元数据的方法
  2. 举例:
  • 你自己就是一个数据 人-xxx
  • 你的身高体重三围就是你的元数据 人-xxx的信息
  • 应该很好理解

三.元注解的使用

  • 五种元注解

  • @Retention 翻译:保留

标明自定义注解的生命周期

Java代码从编写到运行生命周期:

源文件-》Class文件-》运行时数据

SOURCE-》CLASS-》RUNTIME

各个生命周期的用途

Source:跟注释一样 一个标识

Class:基本没见过使用过 有见过的同学可以评论出来

Runtime:运行阶段最常用的

常用的注解:@Service@Compoent都是这个阶段

这个阶段可以通过反射获取信息


  • @Target 翻译:目标🎯

标明自定义注解的使用范围

可传多个value值 底层value值是数组

举例(常用)

@Target(ElementType.TYPE,ElementType.FIELD,ElementType.METHOD)

TYPE:类、接口、注解、枚举

FIELD:属性

METHOD:方法


  • @Inherited 翻译:继承

只有子类继承父类 注解会被继承 子类就可以用父类的注解了

接口继承接口/类实现接口不行


  • @Repeatable 翻译:重复

不重要 等到一千年以后 也用不到一次


  • @Documented

可以在idea通过顶部标签栏找到Tools标签Generate JavaDocument生成对应的Java文档 被@Documented修饰的类 生成文档会显示对应的注解 没有修饰则不显示(没什么用)

创建注解举例:

@Retention(RetentionPolicy.RUNTIME)

@Target({ElementType.TYPE})

public  @interface AppleElectorics{

           String value()default “”;

四.标准注解(常用固定注解)

(1)@Override 标记一个方法重写父类

(2)@Deprecated 标记一个元素已经过期 避免使用(就是不再使用了)

可以是方法 构造函数 参数等等

(3)@SuppressWarnings 不输出对应的编译警告

常用参数:

all:忽略所有的编译器警告

unchecked:验证泛型编程,编译器无法验证类型时

unused:那些未使用的变量,方法或参数相关的警告,也就是代码现在不用了 可以用这个参数

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值