广告
返回顶部
首页 > 资讯 > 数据库 >深入理解Java:注解(Annotation)自定义注解入门
  • 908
分享到

深入理解Java:注解(Annotation)自定义注解入门

2024-04-02 19:04:59 908人浏览 独家记忆
摘要

 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解:  元注解的作用就是负责注解其他注解。Java5.0定

 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。


元注解:

  元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:
    1.@Target,
    2.@Retention,
    3.@Documented,
    4.@Inherited
  这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用和相应分参数的使用说明。


  @Target:

   @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。

  作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)

  取值(ElementType)有:

    1.CONSTRUCTOR:用于描述构造器
    2.FIELD:用于描述域
    3.LOCAL_VARIABLE:用于描述局部变量
    4.METHOD:用于描述方法
    5.PACKAGE:用于描述包
    6.PARAMETER:用于描述参数
    7.TYPE:用于描述类、接口(包括注解类型) 或enum声明

  使用实例:  

深入理解Java:注解(Annotation)自定义注解入门

@Target(ElementType.TYPE)public @interface Table {    
    public String tableName() default "className";
}

@Target(ElementType.FIELD)public @interface NoDBColumn {

}

深入理解Java:注解(Annotation)自定义注解入门

注解Table 可以用于注解类、接口(包括注解类型) 或enum声明,而注解NoDBColumn仅可用于注解类的成员变量。


  @Retention:

  @Retention定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。使用这个meta-Annotation可以对 Annotation的“生命周期”限制。

  作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)

  取值(RetentionPoicy)有:

    1.SOURCE:在源文件中有效(即源文件保留)
    2.CLASS:在class文件中有效(即class保留)
    3.RUNTIME:在运行时有效(即运行时保留)

  Retention meta-annotation类型有唯一的value作为成员,它的取值来自java.lang.annotation.RetentionPolicy的枚举类型值。具体实例如下:

深入理解Java:注解(Annotation)自定义注解入门

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)public @interface Column {    public String name() default "fieldName";    public String setFuncName() default "setField";    public String getFuncName() default "getField"; 
    public boolean defaultDBValue() default false;
}

深入理解Java:注解(Annotation)自定义注解入门

 Column注解的的RetentionPolicy的属性值是RUTIME,这样注解处理器可以通过反射,获取到该注解的属性值,从而去做一些运行时的逻辑处理


  @Documented:

  @Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共api,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。

深入理解Java:注解(Annotation)自定义注解入门

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documentedpublic @interface Column {    public String name() default "fieldName";    public String setFuncName() default "setField";    public String getFuncName() default "getField"; 
    public boolean defaultDBValue() default false;
}

深入理解Java:注解(Annotation)自定义注解入门

@Inherited:

  @Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

  注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。

  当@Inherited annotation类型标注的annotation的Retention是RetentionPolicy.RUNTIME,则反射API增强了这种继承性。如果我们使用java.lang.reflect去查询一个@Inherited annotation类型的annotation时,反射代码检查将展开工作:检查class和其父类,直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。

  实例代码:

深入理解Java:注解(Annotation)自定义注解入门

@Inheritedpublic @interface Greeting {    public enum FontColor{ BULE,RED,GREEN};
    String name();
    FontColor fontColor() default FontColor.GREEN;
}

深入理解Java:注解(Annotation)自定义注解入门

自定义注解:

  使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。

  定义注解格式:
  public @interface 注解名 {定义体}

  注解参数的可支持数据类型:

    1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
    2.String类型
    3.Class类型
    4.enum类型
    5.Annotation类型
    6.以上所有类型的数组

  Annotation类型里面的参数该怎么设定: 
  第一,只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型;   
  第二,参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和 String,Enum,Class,annotations等数据类型,以及这一些类型的数组.例如,String value();这里的参数成员就为String;  
  第三,如果只有一个参数成员,最好把参数名称设为"value",后加小括号.例:下面的例子FruitName注解就只有一个参数成员。

深入理解Java:注解(Annotation)自定义注解入门

获取【下载地址】 

20. 系统设置:修改系统名称,邮件服务器配置,短信账号设置,图片水印配置,微信配置
21. 及时聊天:打开聊天窗口,可群聊、一对一聊天
22. 表单构建:拖拽式快速自定义构建表单,组建元素丰富,有富文本、上传控件、下拉框等等
  -------------------------------------------------------------------------------------------------------------------------数据库管理
23. 数据库备份:可备份单表、整库,支持本地和远程数据库备份(java界面编程技术,Socket编程技术)
24. 备份定时器:quartz 2.2 强大的任务调度,多线程备份数据库,任务启动关闭异步操作
25. 数据库还原:历史备份记录,还原数据库 or 单表 ,统计备份时间和文件大小
26. sql编辑器:强大的SQL编辑器,支持编辑语句复杂查询语句,生成动态报表,可导出excel

 


您可能感兴趣的文档:

--结束END--

本文标题: 深入理解Java:注解(Annotation)自定义注解入门

本文链接: https://www.lsjlt.com/news/36097.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 深入理解Java:注解(Annotation)自定义注解入门
     要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解:  元注解的作用就是负责注解其他注解。Java5.0定...
    99+
    2022-10-18
  • 深入理解注解与自定义注解的一些概念
    一、注解介绍 注解就是一种标记符号,可以在代码上的关键节点(类、方法、变量、参数、包)打上标记,然后程序在编译时或者运行时就可以检测到这些标记从而执行一些自己需要的功能操作。 自定义...
    99+
    2022-11-12
  • Java自定义注解
    目录 一、什么是自定义注解 1)Java注解简介 2)Java注解分类 JDK基本注解 JDK元注解 自定义注解 如何自定义注解? 二、自定义注解 1)获取类上注解值 2)获取类属性上的注解属性值 3)获取方法上的注解值  4)获取参数修饰...
    99+
    2023-09-06
    java 开发语言
  • XML实体注入深入理解
    目录引文简介基础知识DTD内部DOCTYPE声明XML实体注入无回显XXE(BLIND XXE)读取任意文件探测内网端口命令执行dos拒绝服务例题结语引文 在平常的WEB渗透中,我们...
    99+
    2022-11-13
  • 深入理解React的自定义Hook
    自定义 Hooks 的核心是共享组件之间的逻辑。使用自定义 Hooks 能够减少重复的逻辑,更重要的是,自定义 Hooks 内部的代码描述了它们想做什么,而不是如何做。当你将逻辑提取到自定义Hooks 中时,你可以隐藏如何处理某些"...
    99+
    2023-05-14
    前端 代码规范 React.js
  • Java增加自定义注解进行校验入参详解
    目录背景接下来,Show Time注解类注解的Aspect类controller背景 客户使用我们系统的时候,查询不带任何查询条件,查询就返回全部数据,500多万条数据啊,然后直接导...
    99+
    2023-05-15
    Java自定义注解校验入参 Java自定义注解 Java校验入参
  • 【Java 注解】自定义注解(注解属性与使用)
    文章目录 前言一、自定义注解与元注解1.注解属性类型 二、注解的生命周期以及作用目标1.生命周期2.作用目标 三,简单使用四,注解属性赋值简化 前言 Java注解是一种元数据(m...
    99+
    2023-10-21
    java spring spring boot log4j 经验分享 笔记 后端
  • Java Autowired注解深入分析
    今天是正月初八,先祝大家新年快乐。前几天遇见了一次Autowired注入失败的问题,所以找时间研究了一下相关的Spring源码,分享一下。如果哪位大佬发现问题,请帮忙反馈。分享之前,...
    99+
    2023-01-31
    Java Autowired注解 Java Autowired
  • 浅谈Java中注解Annotation的定义、使用、解析
    此例子,用于说明如何在Java中对“注解 Annotation”的定义、使用和解析的操作。注解一般用于自定义开发框架中,至于为什么使用,此处不作过多说明,这里只说明如何使用,以作备记。下面例子已测试,可以正常运行通过。1、注解自定义。这里定...
    99+
    2023-05-31
    java 自定义注解 解析
  • Java中自定义注解
    当使用Java编写应用程序时,我们常常使用注解来为程序添加附加信息,并且可以在运行时读取这些注解。除了Java提供的预定义注解外,我们还可以自定义注解来满足自己的需求。在本文中,我们将介绍Java中自定义注解的基础知识。 一、什么是注解? ...
    99+
    2023-09-24
    java 开发语言
  • Java自定义注解的详解
    Java自定义注解Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容。在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解。Java1.5引入了注解,当前许多java框架中大量使用...
    99+
    2023-05-31
    java 自定义 注解
  • Mybatisplus详解如何注入自定义的SQL
    目录SQL 注入器第一步重写getMethodList第二步定义自己的SQL方法类第三步定义添加了自定义方法的Mapper类测试调用遗留问题SQL 注入器 官方文档提供了一个小案例 ...
    99+
    2022-11-13
  • Java怎么自定义注解
    这篇文章主要介绍“Java怎么自定义注解”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java怎么自定义注解”文章能帮助大家解决问题。注解注解为我们在代码中添加信息提供一种形式化的方法,使我们可以在...
    99+
    2023-07-05
  • JAVA自定义注解详情
    目录原理:元注解:@Retention参数讲解:案例:给一个类的String属性设置默认值总结原理: 注解的本质是继承Annotation的特殊接口,其具体实现类是Java运行时生成...
    99+
    2022-11-12
  • Java教程:JAVA自定义注解
    注解概念注解是Java SE 5.0版本开始引入的概念,它是对java源代码的说明,是一种元数据(描述数据的数据)。注解和注释的不同注释注释是对代码的说明,给代码的读者看,便于帮读者梳理业务逻辑;在程序代码中经常看到的以@ 开头的大部分是注...
    99+
    2023-06-02
  • Java注解详解及实现自定义注解的方法
    目录概念‍♀️作用⛹JDK中预定义的一些注解注解生成文档案例自定义注解格式本质属性:接口中的抽象方法元注解:用于描述注解的注解‍♂️在程序使用(解析)注解:获取注解中...
    99+
    2022-11-13
  • java中怎么自定义注解详解
    在Java中,可以使用`@interface`关键字来定义注解。自定义注解的语法如下: public @interface Cust...
    99+
    2023-10-28
    java
  • Java 自定义注解的魅力
    目录注解是什么?元注解是什么?标准的元注解:@Target元注解:@Retention元注解:@Documented元注解:@Inherited元注解:自定义注解实现:自定义注解的简...
    99+
    2022-11-12
  • React Native自定义路由管理的深入理解
    目录1、自定义路由2、Tab导航3、数据回传总结1、自定义路由 众所周知,不管是在原生Android还是iOS,它们都有一个默认的路由路由栈管理类。由于React Native官方...
    99+
    2022-11-12
  • Java注解的简单入门小案例
    目录快速了解注解Talk is cheap, show me the code.定义注解定义类处理注解类测试测试结果快速了解注解 我发现现在很多资料讲的都太过于详细了,但是我们可能仅...
    99+
    2023-05-14
    Java注解 注解简单 Java注解入门
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作