理解Java注解类型

一. 理解Java注解

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy1。通过代理对象调用自定义注解(接口)的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。
实际上Java注解与普通修饰符(public、static、void等)的使用方式并没有多大区别,下面的例子是常见的注解

通过在方法上使用@Test注解后,在运行该方法时,测试框架会自动识别该方法并单独调用,@Test实际上是一种标记注解,起标记作用,运行时告诉测试框架该方法为测试方法。而对于@Deprecated和@SuppressWarnings(“uncheck”),则是Java本身内置的注解,在代码中,可以经常看见它们,但这并不是一件好事,毕竟当方法或是类上面有@Deprecated注解时,说明该方法或是类都已经过期不建议再用,@SuppressWarnings 则表示忽略指定警告,比如@SuppressWarnings(“uncheck”),这就是注解的最简单的使用方式,那么下面我们就来看看注解定义的基本语法

二. 基本语法
声明注解与元注解

我们先来看看前面的Test注解是如何声明的:

三. 注解支持的数据类型
所有基本类型(int,float,boolean,byte,double,char,long,short)
String
Class (如:Class 或 Class

四. 获取类级注解

五. 获取方法注解

Original: https://www.cnblogs.com/mrhgw/p/10524548.html
Author: 有容乃大
Title: 理解Java注解类型

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539298/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • springboot 读取 yml 配置的几种方式

    前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一…

    Java 2023年6月16日
    081
  • Docker 安装 MySQL、Redis

    1 Docker 中安装 Redis 1.1 创建目录 在硬盘上创建 redis 的数据目录: mkdir -p /Users/yygnb/dockerMe/redis/data …

    Java 2023年6月16日
    082
  • 5个必知的高级SQL函数

    5个必知的高级SQL函数 SQL是关系数据库管理的标准语言,用于与数据库通信。它广泛用于存储、检索和操作数据库中存储的数据。SQL不区分大小写。用户可以访问存储在关系数据库管理系统…

    Java 2023年6月15日
    0121
  • Java:聊聊Java基础(1)- 简介

    Java简介 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。 Jav…

    Java 2023年6月5日
    073
  • 2.5W 字详解线程与锁了,面试随便问

    在 java 并发编程中,线程和锁永远是最重要的概念。语言规范虽然是规范描述,但是其中也有非常多的知识和最佳实践是值得学习的,相信这篇文章还是可以给很多读者提供学习参考的。 本文主…

    Java 2023年6月5日
    081
  • java https post请求并忽略证书,参数放在body中

    1 新建java类,作用是绕过证书用 java;gutter:true; package cn.smartercampus.core.util; import java.secur…

    Java 2023年5月29日
    066
  • JVM虚拟机类加载机制(一)

    类从被加载到虚拟机内存中开始,到卸载出内存截止,整个生命周期包括:加载、验证、准备、解析,初始化、使用、卸载七个阶段。其中验证、准备、解析三个部分统称为连接。 类初始化情况: 遇到…

    Java 2023年6月9日
    066
  • Java SE Object类

    当直接输出一个对象时,toString 方法会被默认的调用 System.out.println(monster); //就会&…

    Java 2023年6月7日
    077
  • WebBrowser 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件

    使用多线程,在Form中实例化WebBrowser时,就会报异常 我用下面方法解决: 1、在方法块外包一个线程 2、线程加入STA Original: https://www.cn…

    Java 2023年5月30日
    0128
  • 十八、IO流(完结)

    十八、IO流 18.1 File 类 18.1.1 File 类介绍 java.io.File 类是 文件 和 目录 的 路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操…

    Java 2023年6月5日
    069
  • 【校招VIP】[Java][一本][6分]按照真实的技能点进行业务描述

    关注【校招VIP】公众号 ,回复【简历 】,添加校招顾问微信,即可获取简历指导! 本份简历是一位21届一本java同学的简历,简历评分6分。 一、学员简历 二、指导意见 简历版式问…

    Java 2023年6月5日
    083
  • SpringMvc异常处理

    异常处理器 编写异常处理器 @RestControllerAdvice //用于标识&amp…

    Java 2023年6月7日
    080
  • spring boot / tomcat 远程调试.

    spring boot 允许远程调试 nohup java -Dspring.profiles.active=dev -agentlib:jdwp=transport=dt_soc…

    Java 2023年5月30日
    077
  • Windows高效开发环境配置(一)

    更多精彩内容,欢迎关注公众号:逻魔代码 前言 用了多年的 MacOS 做开发,一系列诸如 Alfred、Item2、Oh-my-zsh 之类的工具,大大地提升了工作的效率和使用舒适…

    Java 2023年6月8日
    073
  • idea 打包 springboot 项目,tomcat正常启动但访问报404

    两个步骤: 1、启动类 没有 继承 SpringBootServletInitializer 类 2、记得将 springboot 自带的 tomcat 插件 打包时 排除掉 Or…

    Java 2023年5月29日
    082
  • JDBC的详细讲解和注意事项

    BasicDao 根据连接的数据库 用德鲁伊去处理改查 package com.yc.ajax.dao; import com.yc.ajax.Utils.JDBCUtilsByD…

    Java 2023年6月6日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球