反射
何为反射?
在运行状态时,对于任何一个类,都能够动态获取这个类得所有方法和属性(私有,公有,受保护),都能够调用任意一个方法和属性。
要想获取一个类的成员变量 , 成员方法 , 构造函数 , 类名等 ,必须先获取这个类的类类型(.class)
反射操作都是编译完成后的操作(编译为字节码(.class)文件后的操作),也就是运行时刻的操作
1.Class的表示
万事万物都是对象(数据类型有包装类 ,普通类(class) 也是对象 , 是Java.lang.Class的对象)
任何一个类都是Java.lang.Class 的实例对象
2,动态加载类(第三种加载方式为动态加载)
运行时加载 (想加载哪个就加载那个,互不干扰)
编译时加载(当程序代码在编译的时候,加载到new的时候,因为new是静态加载类,所以需要加载完所有new了的对象才能顺利运行,
如果有一个对象没有new , 那整个程序都不能运行,这样就会变得不灵活,假如我只想用特定得一个类,而不用其他得类,这样就不行,
所以应该用动态加载类)
编译时的加载类为静态加载类,运行时的加载类为动态加载类
3.获取方法信息
任何事物都是对象,int ,void String double......都是对象
获取Student的成员变量,函数,构造方法,类名
调用一个类中的方法
4.通过反射真正的了解集合的泛型
集合的泛型是防止错误输入,约束输入的类型,在编译时有效,在编译之后就无效了,可以通过反射跳过泛型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端