当前位置: 首页 > news >正文

java之反射机制和注解(更新中......)

Reflect在文档中的位置:

在这里插入图片描述
文档链接:https://docs.oracle.com/javase/8/docs/api/index.html
用于获取类或对象的反射信息。

常用的反射机制重要的类:

java.lang.Class:整个字节码,代表一个类型。包含了以下三块内容;
java.lang.reflect.Nethod:method的字节码;
java.lang.reflect.Constructor:构造方法的字节码;
java.lang.reflect.Field:属性相关的字节码。注意与local_variable的区分。

  • 作用:
    可以通过反射机制,实现OCP开闭原则,即对扩展开发,对修改关闭。框架中常用,让程序更加灵活
  • 获取Class的三种方法
    静态方法:
    在这里插入图片描述

forName()的执行,会加载该类。即该类的静态代码块会执行一次。

比如,获取String的字节码(异常处理,ClassNotFoundException):

Class strCls = Class.forName("java.lang.String");

另外两种获取Class的方法:

// 通过实例方法getClass()获取(getClass是Object的方法)
Class strCls = "abc".getClass();
// 通过静态熟悉获取
Class strCls = String.classClass intCls = int.class;
Class dateCls = Date.class;
Class doubleCls = double.class;
// ...

Class常用方法:

methodsdescribe
newInstance创建一个该类型的实例对象(Creates a new instance of the class represented by this Class object.)
getFields获取该类中所有public的属性
getDeclaredFields获取该类中所有的属性
getDeclaredMethods获取类的方法:实例方法、静态方法等
getDeclaredMethod获取类的指定方法
getDeclaredConstructors获取构造方法
getDeclaredConstructor获取指定参数的构造方法

Field常用方法:

methodsdescribe
getModifiers获取当前属性的修饰符类型的int值
getType获取当前属性的类型
getName获取当前属性的key
set(obj, attrStr)设置当前类实例属性的值。eg,obj为当前类的实例对象
get(obj)获取当前类实例属性的值

Modifier常用方法:

methodsdescribe
toString把修饰符类型的int值转换为字符串。default-0、public-1、private-2、protected-4、static-8、final-16

Method常用方法:

methodsdescribe
invoke(obj, args)执行当前的方法,返回值等同于被反射的调用方法的返回值

invoke在被调用时,要注意剩余参数的匹配。paramterType[] -> new Type[] {xxx, yyy}

Constructor常用方法:

methodsdescribe
newInstance(Object… params)执行指定的构造方法,创建对象
  • 注解Annotation
    一种引用类型,和普通的类相似,也是生成xxx.class文件,并且可以互相引用。比如注解也可以作用于注解上。一般用于校验等,具体用法待后续补充

元注解:Target、Retention

Target:注解作用于那些类型上
Retention:注解作用在那个阶段上。源码、Class、Class + 反射机制发现

JDK内置注解:

Deprecated:表示当时被注解的目标已过时
Override: 只能用在方法上,编译阶段,和运行阶段无关. 重写父类的方法。标识性注解

相关文章:

java之反射机制和注解(更新中......)

Reflect在文档中的位置: 文档链接:https://docs.oracle.com/javase/8/docs/api/index.html 用于获取类或对象的反射信息。 常用的反射机制重要的类: java.lang.Class:整个字节码,代表一个类型。包含了以下三块内容&a…...

【Unity入门】25.入门结课Demo--神鸟大战怪兽

【Unity入门】入门结课Demo--神鸟大战怪兽 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一) 前言 经过了两个月的学习,我们也顺利的完成了入门课程,最后就用一个Demo作为我们的结课句号吧&am…...

HTTP协议基本格式

HTTP即HyperText Transfer Protocol(超文本传输协议),HTTP基于TCP/IP协议传输数据。 目录 Chrome抓包Fiddler代理抓包HTTP协议格式HTTP请求首行URL方法Get方法Post方法Get与Post的区别 请求报头中的属性Cookie和SessionCookie与Session的区别…...

在 ubuntu 22.04 上配置界面服务器 xrdp

文章目录 图形界面解决方案VNCXRDP XRDP 实例安装和配置使用 XRDP 使用原理谁更快 : X11转发 > XRDP > VNC 图形界面解决方案 1. VNC 2. XRDP 3. X11 ssh : // https://blog.csdn.net/u011011827/article/details/131065690VNC 外部开放端口 用的 是 5901-5910 桌面用…...

53、基于51单片机蓄电池充电器过充过放保护LCD液晶屏显示系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&…...

【C/C++】详解 函数重载和应用

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…...

WPF开发txt阅读器4:字体控件绑定

文章目录 控件折叠字体尺寸绑定选择字体字体的中文名称 txt阅读器系列&#xff1a; 需求分析和文件读写目录提取类&#x1f48e;列表控件与目录 控件折叠 作为一个txt阅读器&#xff0c;至少能够设置文字字体、尺寸&#xff0c;段落行间距等&#xff0c;还得有护眼模式等一系…...

CoreDX DDS应用开发指南(8)开发订阅应用程序

11 应用数据类型Application Data Types 11.1 概述 每个DDS主题都包含一个且仅包含一个数据类型,这是在主题上进行通信时使用的用户定义的数据类型。在大多数情况下,应用程序开发人员以数据定义语言(DDL)格式定义这些DDS数据类型。编译器用于将这些DDL类型定义转换为适当的…...

基于Python的接口自动化-读写配置文件

目录 引言 configparser模块功能介绍 引言 在编写接口自动化测试脚本时&#xff0c;有时我们需要在代码中定义变量并给变量固定的赋值。为了统一管理和操作这些固定的变量&#xff0c;咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中&#xff0c;后续需要用到这…...

useEffect的基础知识和底层机制

useEffect 是 React 中一个重要的 Hook&#xff0c;用来处理组件的副作用操作。它的基础知识包括两个方面&#xff1a;执行时机和参数。 执行时机&#xff1a; useEff ect 的执行时机包括两种情况&#xff1a; 组件挂载时&#xff0c;即第一次渲染之后。组件更新时&#xff…...

chatgpt赋能python:Python中如何加空格

Python中如何加空格 Python是一门广泛应用于科学计算、数据分析、人工智能、Web开发等领域的高级编程语言。在Python编程过程中&#xff0c;经常需要使用到空格&#xff0c;以实现程序的格式化和美观&#xff0c;同时也有助于提高代码的可读性和可维护性。本文主要介绍Python中…...

软件测试之路已不再是坦途

去年下半年才跳了槽&#xff0c;过程非常顺利&#xff0c;没有经历大家所说的工作荒的境地&#xff0c;所以一直没有直观地感受到软件测试就业形势到底有多严峻。 近来看到一些机构频频发出某某测试员在糟糕的就业形势下逆袭拿下XXW的某厂offer&#xff0c;然后推荐测试进阶课…...

扫雷——C语言实现

扫雷 文章目录 扫雷实现代码什么是扫雷基本功能实现显示选择菜单定义几个二维数组&#xff1f;确定数组大小初始化数组布置地雷打印展示数组排查地雷记录指定区域周围地雷的个数判断排雷成功排查地雷实现代码 基本功能的实现代码和效果展示 拓展功能简化游戏界面改变字体颜色实…...

CSS基础学习--6 CSS Text(文本)

一、文本颜色 color:red; 颜色属性被用来设置文字的颜色。 颜色是通过CSS最经常的指定&#xff1a; 十六进制值 - 如: &#xff03;FF0000一个RGB值 - 如: RGB(255,0,0)颜色的名称 - 如: red body {color:red;} h1 {color:#00ff00;} h2 {color:rgb(255,0,0);} 二、文本的…...

高精度电压源的应用场合有哪些

高精度电压源是一种能够提供恒定、稳定电压输出的设备&#xff0c;被广泛应用于各种领域。高精度电压源是现代电力、通信、控制等领域中重要的测试仪器之一&#xff0c;其主要功能是提供稳定可靠的直流或交流电源&#xff0c;并具有高精度和高分辨率的特点。在实际应用中&#…...

Android约束布局

一、嵌套布局效率可能很低。 在 Android 开发中,我们常常需要使用嵌套布局来实现某些较复杂的界面效果。但是嵌套层级太深会带来一些问题,主要包括: 视图层级过深,导致内存占用过高和性能下降。Android 需要为每个 View 对象分配内存,嵌套层级过深会创建很多 View 对象,占用较…...

selenium基础语法

文章目录 selenium基础语法1.定位页面元素2.元素的操作1) 模拟键盘输入(send_keys)2) 点击操作(click)3) 清除去对象输入的文本内容(clear)4) 获取文本(gettext) 3. 等待4. 信息打印5. 窗口6. 导航7. 弹窗8. 鼠标和弹窗9.选择框10.文件上传11.屏幕截图 selenium基础语法 1.定位…...

运行后端SpringBoot项目

目录 一、注册微信开发者账号 1. 注册开发者账号 2. 获取appid和密钥 二、开通腾讯云TRTC服务 1. TRTC业务介绍 2. 为什么不使用阿里云的实时音视频服务&#xff0c;偏要选用腾讯云TRTC服务&#xff1f; 3. 开通TRTC服务 4. 领取TRTC的AppID和密钥 三、导入 emos-api …...

#如何对待工作中的失误?# 如何对待工作与生活中的失误——一些不成熟的忠告

关于如何对待工作与生活中的失误的忠告 1.在面对失误而带来的指责和沮丧时&#xff0c;应该如何做&#xff1f;1.1 正确认识失误1.2 处理失误后情绪与问题的途径1.2.1 接受现实&#xff0c;不要否认错误1.2.2 不要过度臆想1.2.3 安排调整情绪的时间1.2.4 向他人寻求帮助 2.发生…...

Shell脚本文本三剑客之awk编辑器

目录 一、awk简介 二、awk工作原理 三、awk命令格式 四、awk命令的使用 1.print操作按行输出文本 2.print操作按字段截取输出文本 3.使用BEGIN和END指定操作 4.使用管道符号&#xff0c;双引号调用shell命令 5.使用操作getline 6.使用操作OFS 7.配合数组使用 一、…...

Focal Loss介绍

目录 前言一. Focal Loss二. 总结 前言 在目标检测算法中&#xff0c;我们会经常遇到Focal Loss这个东西&#xff0c;今天我们就来简单的分下下这个损失。 一. Focal Loss 在深度学习训练的时候&#xff0c;在遇到目标类别不平衡时&#xff0c;如果直接计算损失函数&#xff0…...

【数据结构与算法】04 哈希表 / 散列表 (哈希函数、哈希冲突、链地址法、开放地址法、SHA256)

一种很好用&#xff0c;很高效&#xff0c;又一学就会的数据结构&#xff0c;你确定不看看&#xff1f; 一、哈希表 Hash Table1.1 核心概念1.2 哈希函数 Hash Function1.3 哈希冲突 Hash Collision1.4 哈希冲突解决1.41 方法概述1.42 链地址法 Separate Chaining1.43 开放寻址…...

每日一道面试题之介绍一下Java的序列化和反序列化!

什么是序列化&#xff1f; 序列化是将对象转换为容易传输的格式的过程&#xff0c;它是一种用来处理对象流的机制&#xff0c;将对象的内容流化&#xff0c;从而使流化后的对象传输于网络之间&#xff0c;以便它们可以在网络上传输或在磁盘上存储。反序列化是将序列化后的数据…...

Netty实战(十一)

预置的ChannelHandler和编解码器&#xff08;一&#xff09;HTTP和SSL/TLS的添加和使用 一、SSL和TLS添加二、基于Netty的HTTP程序2.1 HTTP解码器、编码器和编解码器2.2 聚合HTTP消息2.3 HTTP压缩 一、SSL和TLS添加 作为一个通讯框架&#xff0c;通讯数据的安全性也是不可或缺的…...

Qos服务质量、心跳机制、保留消息,遗嘱信息,用户密码认证

这里写目录标题 Qos服务质量使用ESP8266接收QoS1的MQTT消息保留消息&#xff08;retainFlag&#xff09;心跳机制遗嘱信息 Qos服务质量 若想实现QoS>0&#xff0c;订阅端连接服务端时cleanSession需要设置为false&#xff0c;订阅端订阅主题时QoS>0&#xff0c;发布端发…...

MATLAB 之 线性方程组求解

这里写目录标题 一、线性方程组求解1. 线性方程组的直接解法1.1 利用左除运算符的直接解法1.2 利用矩阵的分解求解线性方程组 2. 线性方程组的迭代解法2.1 Jacobi 迭代法2.2 Gauss-Serdel 迭代法 3. 求线性方程的通解 一、线性方程组求解 在 MATLAB 中&#xff0c;关于线性方程…...

华为OD机试真题 Java 实现【字符串序列判定】【2022Q4 100分】,附详细解题思路

一、题目描述 输入两个字符串a和b,都只包含英文小写字母。a长度<=100,b长度<=500,000。 判定a是否是b的有效子串。 判定规则: a中的每个字符在b中都能找到(可以不连续),且a在b中字符的前后顺序与a中顺序要保持一致。 (例如,a=”qwt”是b=”qwerty”的一个子…...

taro使用小记 —— 持续更新

目录 1、在 taro 中使用 axios2、在 taro 中添加全局组件自动引入和方法自动引入3、在 taro 中使用 pinia 1、在 taro 中使用 axios taro 3.6 版本已经支持了网络请求库。 需安装插件 tarojs/plugin-http 使用和注意事项说明&#xff1a; https://www.npmjs.com/package/taroj…...

【LeetCode】110. 平衡二叉树

110. 平衡二叉树&#xff08;简单&#xff09; 思路 对二叉树做先序遍历&#xff0c;从底至顶返回子树最大高度&#xff0c;若判定某子树不是平衡树则“剪枝”直接向上返回。 递归返回值&#xff1a; 当节点 root 左、右子树的高度差 > 1&#xff1a;返回 -1&#xff0c;代…...

SQL视图、存储过程、触发器

一、视图 &#xff08;一&#xff09;介绍 视图(view&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&…...

石家庄市环保局网站建设项目备案系统/厦门seo顾问屈兴东

定义一个完整的类方法&#xff0c;需要六个步骤&#xff0c;也就是六大部分。也因为这六个部分的不同而可以大概分为9种方法。这是我一整天作图整理出来的。可能有些漏缺错误&#xff0c;希望大家能帮忙纠正。让我明白哪里错了&#xff0c;这是对我这个初学者最大的帮助&#x…...

网站维护页面源码/百度竞价推广的技巧

tomcat的安全策略文件 Catalina.policy 当tomcat 运行未知的web应用时&#xff0c;为了防止java代码对服务器系统产生安全影响。比如删除系统文件&#xff0c;重启系统等。需要对java 代码进行安全控制。这时候就要配置这个文件。更加详细资料可以自行学习java 安全管理器 Secu…...

山西百度公司做网站的/成都seo招聘信息

自动增长 自动增长&#xff1a;auto_increment&#xff0c;当对应的字段&#xff0c;不给值&#xff0c;或者是默认值&#xff0c;或者是null的时候&#xff0c;就会自动的被系统触发&#xff0c;系统会从当前字段中取已有的最大值再进行1操作&#xff0c;得到新的字段值。 自增…...

深圳市建设管理中心网站首页/平台推广是做什么的

免责声明&#xff1a;文中有一些图片来源自网络&#xff0c;如有版权请通知我删除&#xff0c;谢谢&#xff01;网络启动最早用于无盘系统&#xff0c;那时的电脑只配备软驱也没有网络&#xff0c;系统启动速度慢而且功能简单。后期虽然有了硬盘后&#xff0c;但造价昂贵、管理…...

建站公司/网站查询域名

GroovyFX是一个库&#xff0c;使编写JavaFX 2.x应用程序更加简单和自然。 GroovyFX利用Groovy的Builder模式的功能来使开发人员能够以简洁的声明式风格进行编写。 以这种方式构造UI的能力使可视化正在构建的用户界面变得更加容易。 简短易懂的代码也易于维护和扩展。 GroovyFX完…...

能连接wordpress的app/广东网络优化推广

新建一单文档滚动视图AppExe。源文件链接 doc类添加变量 public:int ReadImage(LPCTSTR lpszPathName);int imageWidth,imageHeight; //滚动视图大小BITMAPINFO * lpbmi; //bmp显示缓存&#xff0c;必需IplImage* m_pImage; //图像指针 变量初始化 CImageProcessDoc::CIm…...