Java反射基础

什么是反射

Java 中的反射机制是指,Java 程序在运行期间可以获取到一个对象的全部信息。例如构造方法,类名,成员变量,父类,所实现的接口等

反射机制一般用来解决Java 程序运行期间,对某个实例对象一无所知的情况下,如何调用该对象内部的方法问题。

通过反射获取class类的三种方法

1.通过类名来获取

Class bookClass1 = Book.class;

2.通过Class类的forName方法获取

Class bookClass2 = Class.forName("com.Reflection.Book");

3.通过对象获取

Class bookClass3 = new Book().getClass();

注意:同一个java虚拟机下的同一个类只会被创建一次

反射从某一个类中的成员变量获取和保存值

1.首先先获取一个类,并创建该类的对象通过newInstance()方法来获取

Class BookClass = Book.class;
Object Bookobj =  BookClass.newInstance();

2.通过Class对象的getDeclaredField方法来获取Class某个Class对象的指定成员变量

Field bookName = BookClass.getDeclaredField("bookName");

3.如果该成员变量为私有的则需要通过setAccessible将其设置为true来访问,并通过set方法来存入字符串

bookName.setAccessible(true);
bookName.set(Bookobj,"舒克和贝塔");

反射如何获取构造方法

1.首先先获取一个类,并创建该类的对象通过newInstance()方法来获(如上)

2.通过Class对象的getDeclaredField方法来获取Class某个Class对象的指定成员变量

(如果是有参构造则需要将有参构造的参数的参数类型传入)

bookClass.getConstructor(String.class, String.class, double.class, int.class);
 Constructor constructor = bookClass.getConstructor();

通过构造方法来获取类对象

Object o = constructor.newInstance();

反射如何获取普通方法

   Class bookClass = Class.forName("com.fanshe.Book");Method[] methods = bookClass.getMethods();for(Method method:methods){System.out.println("访问修饰符" + method.getModifiers());System.out.println("返回值类型" + method.getReturnType());System.out.println("参数列表" + method.getParameterTypes());for( Parameter param:method.getParameters()){System.out.println("参数" +param);}System.out.println("方法名" + method.getName());}

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

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

相关文章

⭐北邮复试刷题LCR 018. 验证回文串__双指针 (力扣119经典题变种挑战)

LCR 018. 验证回文串 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的 回文串 。 示例 1: 输入: s “A man, a plan, a canal: Panama” 输出: true 解释…

如何选择护眼台灯?孩子学习必选五大宝藏台灯推荐!

因为护眼台灯能提供充足明亮的光照,以及很好的保护眼睛预防近视效果,所以现在的儿童青少年书桌上都会有一盏护眼台灯。但是也有很多家长为孩子选择护眼台灯后,反馈护眼台灯的质量参差不齐,很难避免会购买到劣质产品,这…

2023年12月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 下面代码的输出结果是?( ) dict1 = {1: 10, 2: 20, 3: 30} dict2 <

Gin框架: 使用go-ini配置参数与不同环境下的配置部署

关于 INI 配置文件与go-ini 1 &#xff09;概述 在INI配置文件中可以处理各种数据的配置INI文件是一种简单的文本格式&#xff0c;常用于配置软件的各种参数go-ini 是地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库 Github 地址&#xff1a;https://github.com/go-…

【安卓基础1】初识Android

&#x1f3c6;作者简介&#xff1a;|康有为| &#xff0c;大四在读&#xff0c;目前在小米安卓实习&#xff0c;毕业入职 &#x1f3c6;本文收录于 安卓学习大全&#xff0c;欢迎关注 &#x1f3c6;安卓学习资料推荐&#xff1a; 视频&#xff1a;b站搜动脑学院 视频链接 &…

Git笔记——2

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、撤销修改__情况一 二、撤销修改__情况二 三、撤销修改__情况三 四、删除文件 五、理解分支 六、创建、切换和合并分支初体验 七、删除分支 八、合并冲突 总…

代码随想录算法训练营Day 27|LeetCode39 组合总和、Leetcode40 组合总和 II、Leetcode131 分割回文串

LeetCode39 组合总和 题目链接&#xff1a;组合总和 思路 本题没有组合数量要求&#xff0c;仅仅是总和的限制&#xff0c;所以递归没有层数的限制&#xff0c;只要选取的元素总和超过target&#xff0c;就返回。 代码 class Solution { private:vector<vector<int>…

idea maven创建kotlin项目

第一步&#xff1a;打开idea 第二步&#xff1a;添加依赖 <repositories><repository><id>mavenCentral</id><url>https://repo1.maven.org/maven2/</url></repository></repositories><build><sourceDirectory>…

ElasticSearch DSL查询、排序 、分页的原理及语法

1. DSL查询分类和基本语法 ElasticSearch提供了基于Json的DSL来定义查询&#xff0c;常见的查询类型包括&#xff1a; • 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用&#xff0c;一般不是查出所有&#xff0c;一次性查询20条。例如 match_all • 全文检索(ful…

【webrtc】m77 PacedSender

mediasoup是m77的代码,m77的代码并没有paced controller ,而且与paced sender 的逻辑混在了一起。结合大神们的代码分析,对照m77 进行 理解。m77 有ProbeController。给pacersender 更新飞行数据:PacedSender::InsertPacket(size_t bytes) 对应的是 PacingController::OnPa…

虹科技术丨PTP时钟源设备全攻略:从普通时钟到透明时钟的进阶之路

来源&#xff1a;虹科工业智能互联 虹科技术丨PTP时钟源设备全攻略&#xff1a;从普通时钟到透明时钟的进阶之路 原文链接&#xff1a;https://mp.weixin.qq.com/s/ArBtuLpU6mXax4QWmZDKfQ 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #PTP #普通时钟 #透明时钟 …

http缓存?强制缓存和协商缓存?

HTTP缓存是一种优化网络资源加载速度的技术&#xff0c;通过减少从服务器获取相同资源的次数来实现。HTTP缓存机制包括强制缓存和协商缓存&#xff08;对比缓存&#xff09;两种类型。 强制缓存 强制缓存是指浏览器在接收到服务器返回的响应后&#xff0c;会将响应内容和相关…

区块链笔记(五)---德勤相关分析报告

web3.0 定义&#xff1a; 在《Insights into a Modern World》提出&#xff0c;“信息将由用户自己发布、保管、不可追溯且永远不会泄露&#xff0c;用户的任何行为将不需要任何中间机构来帮助传递”&#xff1b;用来指代一种区块链技术&#xff0c;可以基于“无须信任的交互…

解决用户留存难!复购低! 作为企业家的你可以看看!

工会排队模式详解 在互联网营销的大潮中&#xff0c;各种促销模式层出不穷&#xff0c;但真正能够吸引消费者并实现双赢的却寥寥无几。工的会排队模式便是在这一背景下应运而生&#xff0c;它巧妙地结合了工会积分、奖金池和排队机制&#xff0c;为消费者和商家带来了全新的体…

助力探索社交出海最短变现路径,融云 1V1 音视频「限时免费」

在社交赛道&#xff0c;1V1 业务是最好的切入点。 对于初创公司来说&#xff0c;1V1 业务的技术成本和运营成本相对可控&#xff0c;并且具备与秀场直播等业务融合拓展的巨大空间。未来&#xff0c;相信 1V1 业务会吸引更多开发者投身其中。 一位社交出海经验丰富的从业者曾在…

PHP+vue+mysql校园论坛bbs系统w076f-

本文尝试以B/S架构设计模式中的vue框架&#xff0c;php语言为基础&#xff0c;通过必要的编码处理、BBS论坛系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法&#xff0c;旨在完成一个快速、高效、便捷的BBS论坛系统。本系统以用户与管理员两类人&#xff0c;作为…

【力扣 - 二叉树的直径】

题目描述 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 提示&#xff1a; 树中节点数目在范围 [1, 10000] 内…

【最新Dubbo3深入理解】Dubbo3核心Tripple协议详解

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

区块链游戏解说:什么是 Planet IX

作者&#xff1a;lesleyfootprint.network 编译&#xff1a;cicifootprint.network 数据源&#xff1a;Planet IX Dashboard 什么是 Planet IX Planet IX&#xff0c;一个由原生 IX TOKEN 推动的 Web3 玩赚平台。作为一款 GameFi 策略游戏&#xff0c; Planet IX 上的每项资…

Pytorch-SGD算法解析

关注B站可以观看更多实战教学视频&#xff1a;肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) SGD&#xff0c;即随机梯度下降&#xff08;Stochastic Gradient Descent&#xff09;&#xff0c;是机器学习中用于优化目标函数的迭代方法&#xff0c;特别是在处…