首页 > 编程语言 >Java:注解

Java:注解

时间:2023-01-28 11:35:31浏览次数:34  
标签:Java Target 自定义 RetentionPolicy Inherited 注解 ElementType

注解

还记得刚开始学注解时,很天真。傻傻以为创建一个注解类,加到类、方法、属性上就能有某种功能。
现在对注解的理解很简单:标记,可以被程序读取到的标记!(注释是程序不会去执行的)

如果我们单单创建一个注解放到类或方法上面,此时并无啥用,只有编写类通过反射的手段去读取类或方法上的注解,再进行我们自己的业务逻辑代码实现。

自定义注解常识

  1. 定义注解是@interface,注意这不是接口,前面有@
  2. 注解类的属性定义是:类型 + 属性名。如 String value()
  3. 注解的属性类型只能是:String,Class,Enum,Annotation,上述4种类型的数组
  4. 在使用注解时,属性如果没有默认值,必须赋值

元注解

元注解是用来修饰我们自定义的注解。有4个内置的元注解,分别是:

  1. @Target
  2. @Retention
  3. @Documented(略)
  4. @Inherited

给个示例:

@Target({ ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log

@Target

@Target是用来指定自定义注解可以使用在哪些目标上。这些目标挺多,不过最常用的只有下面这些:

  1. ElementType.FIELD: 字段上
  2. ElementType.METHOD: 方法上
  3. ElementType.Type: 类上
  4. ElementType.PARAMETER:形参上

@Retention

@Retention是用来定义自定义注解的生命周期。有3个生命周期,分别是:

  1. RetentionPolicy.SOURCE:在源文件有效(注解在源文件时存在)
  2. RetentionPolicy.CLASS:在编译时及编译成class文件有效(注解在编译时存在)
  3. RetentionPolicy.RUNTIME:在运行时有效(注解在运行时存在,即在内存中会保留下来),这个是重点,我们能看见的大多是注解生命周期都是定义这个

@Inherited

@Inherited实际也用得很少。但稍微说一下,被他修饰的注解具有继承性。
举个例子:@Inherited修饰了注解A,注解B就能去继承注解A,不是这个意思。而是注解A用在了Person类上,Student继承了Person,那Student也能继承下来注解A

标签:Java,Target,自定义,RetentionPolicy,Inherited,注解,ElementType
From: https://www.cnblogs.com/ibcdwx/p/17069931.html

相关文章

  • 数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web
    文章目录​​高德地图开发系列文章目录​​​​前言​​​​一、项目说明​​​​二、核心代码开发​​​​1.引入库​​​​2.构建DOM容器​​​​3.高德地图开发​​​​(1......
  • 在java中实现两层关联的枚举
    在实际开发中,有各种奇葩的需求,我就遇到一次,在调度任务建依赖的时候,需要选择依赖的周期和周期的值比如下面这样,如果你依赖天任务,那么还需要选择今天、昨天还是前七天?周......
  • Java Web项目1:水果管理系统
    JavaWeb项目1:水果管理系统核心参考资料:JavaWeb教程笔记尚硅谷JavaWeb教程项目架构体系单一架构技术体系视图(V):用户的操作界面+数据的动态显示前端技术:HTML/CSS/J......
  • 读Java8函数式编程笔记03_高级集合类和收集器
    1. 方法引用1.1. 一种引用方法的轻量级语法1.1.1. 提供了一种简短的语法1.1.2. 标准语法为Classname::methodName1.2. 凡是使用Lambda表达式的地方,就可以使用1.......
  • java多线程基础小白指南--关键字识别(start,run,sleep,wait,join,yield)
    在学习java多线程基础上,会遇到几个关键字,理解并识别它们是掌握多线程的必备知识,下面,我将通过源码或者程序演示给出我对这几个关键字的理解,如果有不同意见,欢迎在评论区或者......
  • java安全-RMI
    Java安全-RMI1、RMI原理浅析RMI(RemoteMethodInvocation)远程方法调用,是允许运行在一个JVM中的对象调用另一个JVM中的对象方法。两台虚拟机可以是同一台宿主机的不......
  • 反射操作注解
         ......
  • JavaScript学习笔记—正则表达式
    用来定义一个规则通过这个规则计算机可以检查一个字符串是否符合规则或者将字符串中符合规则的内容提取出来也是JS中的一个对象,所以要使用正则表达式,需要先创建正则表达......
  • java学习记录
    makrdown学习标题二级标题字体粗体斜体斜体加粗划线引用引用分割号图片可以用复制的东西超链接点击列表............
  • JavaScript基础知识
    1.编程语言  1.1编程      1.2计算机语言    1.3编程语言    1.4翻译器      1.5编程语言和标记语言的区别   ......