Java反射之基础概念
0.实例准备
package com.blueStarWei.invoke; public class Student { private String name; public Student() { } public Student(String name) { super(); this.name = name; } public void setName(String name) { this.name = name; } public String getName() { return name; } @Override public String toString() { return "Student [name=" + name + "]"; } }
1. 什么是反射
反射是在运行时(非编译时)动态获取类型的信息(比如:接口信息、成员信息、方法信息等),然后根据这些获取的信息创建对象、访问修改成员、调用方法。
2. 获取Class类的方式(3种):
//方式一:Class.forName("包名.类名") Class stu1 = Class.forName("com.blueStarWei.invoke.Student"); //方式二:类名.class Class stu2 = Student.class; //方式三:实例.getClass() Class stu3 = new Student().getClass();
3. 创建实例对象
3.1 通过无参构造的方式创建实例
Student student = (Student) stu.newInstance();
备注:1)New一个对象的时候,类可以没有被加载;使用newInstance()方法的时候,必须保证这个类已经加载且已经连接【通过Class.forName()实现】。
Class clazz = Class.forName("com.blueStarWei.invoke.Student"); Student student1 = (Student) clazz.newInstance(); //等价于 Student student2 = new Student();
3.2 通过有参构造的方式创建实例
Class clazz = Class.forName("com.blueStarWei.invoke.Student"); Constructor<?> constructor = stu.getConstructor(String.class);
Student winn = (Student) constructor.newInstance("Winn");
4. 反射的作用
4.1 判断任意一个对象所属的类;
4.2 判断任意一个类所具有的成员变量和方法;
4.3 调用任意对象的方法;
4.4 构造任意一个类的对象;
4.5 生成动态代理操作。
更多内容,请访问:http://www.cnblogs.com/BlueStarWei
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix