Java基础---反射

什么是反射?

反射允许对成员变量,成员方法和构造方法的信息进行编程访问。

这么说可能比较抽象,可以简单理解为:反射就是一个人,可以把类里面的成员变量,成员方法,构造方法都获取出来。

     

并且可以获取到成员变量、构造方法、成员方法的所有信息。

对于成员变量:我们可以获取到它的 ①修饰符 ②属性名称 ③类型 ④ 获取变量值/赋值

对于构造方法:可以获取到①修饰符 ②形参 ③方法名  ,甚至还可以利用获取出来的方法创建对象。

对于成员方法:可以获取到①修饰符 ②形参 ③方法名 ④返回值 ⑤抛出的异常 ⑥注解  ,还可以运行获取出来的方法。

总的来说,利用反射,我们可以获取类里面的所有信息。

获取class对象的三种方式:

①: Class.forName("全类名")    ②:类名.Class    ③: 对象.getClass() 

那么这三种方式我们该使用哪一种呢?

其实这3种方式对应着Java里面3种不同的阶段,如果创建一个类的对象,分为以下3个阶段:

①:把java文件编写成class字节码文件。(源代码阶段,还没有把代码加载到内存中,在硬盘中进行操作)  此时,我们可以使用方式①

②:在运行代码前,要先把字节码文件加载到内存中。(加载阶段)   ----方式②

③:在内存中,可以创建类的对象,比如:A   a   =   new   A();  (运行阶段)  ----方式③

一般是这样使用,并不绝对。

利用反射获取构造方法:

        

Constructor类中用于创建对象的方法:

T newInstance(Object...  initargs): 根据指定的构造方法创建对象,上面的getDeclaredConstructors()方法虽然可以获取所有的构造方法,但是不能使用私有的构造方法来创建对象。先要取消自动检查:setAccessible(true)。

        

利用反射获取成员变量:

        

                ​​​​​​​        

利用反射获取成员方法:

        

        ​​​​​​​        ​​​​​​​        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springcloud智慧工地APP云综合平台源码 SaaS服务

目录 智慧工地功能介绍 一、项目人员 二、视频监控 三、危大工程 四、绿色施工 五、安全隐患 具体功能介绍: 1.劳务管理: 2.施工安全管理: 3.视频监控管理: 4.机械安全管理: 5.危大工程监管: …

ctf_show笔记篇(web入门---反序列化)

目录 反序列化 254:无用,是让熟悉序列化这个东西的 255:直接使$isViptrue 256:还是使用变量覆盖 257:开始使用魔法函数 258:将序列化最前面的过滤了,使用绕过 259: 这一题需要看writeup才…

windows10 WSL启动Ubuntu虚拟机,安装DolphinScheduler

文章目录 1. 启动WSL与虚拟机2. 安装Docker与DolphinScheduler容器 1. 启动WSL与虚拟机 使用管理员权限运行命令: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux重启后即可创建虚拟机 在Microsoft Store中搜索Ubuntu&…

研二双9找个日常实习都找不到,哎!

投了几家日常,要不就面完没反应,要不就秒挂,看不透了。是最近都在忙着处理春招和暑期实习吗,怎么连个日常实习都找不到? 个人背景双9,lc以前刷过200道,最近没怎么碰过。 腾讯 3.13 一面&#xf…

给老婆整了个短剧搜索机器人APP

最近短剧挺火,很多群友们都在做一些资源分享,老胡于是基于这些资源做了个短剧搜索引擎,挺多朋友喜欢看的,我老婆也在看哈哈,真上头,废话不多说,上短剧机器人。 短剧机器人 直接在微信群输入&…

麒麟 V10 一键安装 Oracle 11GR2(231017)单机版

Oracle 一键安装脚本,演示 麒麟 V10 一键安装 Oracle 11GR2 单机版过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址:Shell脚本安装Oracle数据库 脚本第…

提升合规性!Zoho如何优化CRM产品合规性?

在企业数字化和信息化高速发展的今天,CRM管理系统成为越来越多企业的选择。然而,不是所有CRM供应商都有合规意识。合规性不应当只是一项法律规定,更是保证CRM供应商持续发展、赢得客户信赖以及应付监管压力的关键支撑。Zoho对企业合规性的重视…

Python探索反距离加权空间插值方法的深度

介绍 反距离加权 (IDW) 是一种广泛用于地理信息系统 (GIS) 和环境科学的空间插值技术,用于根据附近位置的值估计任何位置的缺失值。其基本原理很直观:距离兴趣点较近的位置比距离较远的位置更相似。本文深入探讨了 IDW 的方法、应用、优势和局限性,深入探讨了其在空间分析中…

招聘必备知识:求职者跟进邮件如何写?

写一封正确的招聘跟进邮件是一门艺术。在面试结束后给你的候选人发一封好的后续邮件可以为招聘工作创造奇迹,甚至最终入职的候选人也是如此。 与候选人保持良好的沟通,可以确保他们一直参与其中,给予他们应得的尊重和赞赏。然而,…

机器学习——终身学习

终身学习 AI不断学习新的任务,最终进化成天网控制人类终身学习(LLL),持续学习,永不停止的学习,增量学习 用线上收集的资料不断的训练模型 问题就是对之前的任务进行遗忘,在之前的任务上表现不好…

HarmonyOS系统开发ArkTS常用组件按钮及参数

Button组件有两种使用方式,分别是不包含子组件和包含子组件两种方式。不同方式Button 组件所需的参数有所不同。 1、不包含子组件 Button(label?: string, options?: { type?: ButtonType, stateEffect?: boolean }) label为按钮上显示的文字内容options.type…

21个 JVM 技术点详解(附面试解答)

最近兄弟们面试,都逃不过被 JVM 问题轰炸的命运,为啥面试官喜欢拿 JVM 说事呢?V 哥认为,除了要问倒你,就是要压你薪水,咱绝对不能怂,俗话说的好:兵来将挡,水来土掩&#…

模拟面试

1.TCP通信中的三次握手和四次挥手过程 三次握手 1.客户端像向服务器端发送连接请求 2.服务器应答连接请求 3.客户端与服务器简历连接 四次挥手: 客户端或服务器端发起断开请求,这里假设客户端发送断开请求 1.客户端向服务器发送断开请求 2.服务器应答断开请求 3.服…

JavaSE(上)-Day6

JavaSE(上)-Day6 数组数组的定义数组的初始化打印数组分析数组索引数组内存图 方法方法的定义和调用方法的重载方法的内存图 二维数组二位数组的创建和初始化二维数组的内存图 数组 1.数组是一种容器,可以一次存储多个相同类型的数据 数组的…

opengl日记9-opengl使用纹理示例

环境 系统:ubuntu20.04opengl版本:4.6glfw版本:3.3glad版本:4.6cmake版本:3.16.3gcc版本:10.3.0 直接上代码 CMakeLists.txt cmake_minimum_required(VERSION 3.5) set(CMAKE_C_STANDARD 11) set(CMAKE_…

【linux线程(三)】生产者消费者模型详解(多版本)

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux线程 1. 前言2. 初识生产…

【GameFramework框架内置模块】10、本地化(Localization)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q7…

哔哩哔哩秋招Java二面

前言 作者:晓宜 个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者 一面过后面试官叫我别走,然后就直接二面,二面比较简短,记录一下,希望可以…

绝地求生:现在购买通行证还能兑换成长型武器吗?

大家好,我闲游盒,这几天收到几位盒友的私信咨询我现在购买通行证还能获得一把成长型武器吗?我相信还有许多盒友也有此困惑,那我就在这统一回复了,目前距通行证和商城物资箱礼包下架还有最后16天时间,众所周…

js实现hash路由原理

一、简单的上下布局&#xff0c;点击左侧导航&#xff0c;中间内容跟对变化&#xff0c;主要技术使用js检测路由的onhashchange事件 效果图 二、话不多说&#xff0c;直接上代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"…