反射_案例
反射_案例
反射:将类的各个组成部分封装为其他对象,这就是反射机制
好处:
1.可以在程序运行过程中,操作这些对象。2.可以解耦,提高程序的可扩展性。
获取class对象的方式:
1. class.forName("全类名")∶将字节码文件加载进内存,返回class对象*多用于配置文件,将类名定义在配置文件中。读取文件,加载类
2.类名.class:通过类名的属性class获取
*多用于参数的传递
3.对象.getclass() : getclass()方法在object类中定义着。
*多用于对象的获取字节码的方式
*结论︰
同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪
-种方式获取的class对象都是同一个。
Class对象功能:
获取功能:
1.获取成员变量们
2.获取构造方法们
3.获取成员方法们
4.获取类名
import domain.Person; import java.lang.reflect.Method; public class ReflectDemo4 { public static void main(String[] args) throws Exception { //0、获取Person的Class对象 Class personClass = Person.class; //获取类名 String classname = personClass.getName(); System.out.println(classname); } }
运行结果:
需求:写一个类,可以帮我们创建任意类的对象,并且执行其中任意方法
实现:1、配置文件 2、反射
步骤:
1、将需要创建的对象的全类名和需要执行的方法定义在配置文件中
2、在程序中加载读取配置文件
3、使用反射技术来加载类的文件进内存
4、创建对象
5、执行方法
Student类:
public class Student { public void sleep(){ System.out.println("sleep..."); } }
测试类:
import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.lang.reflect.Method; import java.net.URL; import java.util.Enumeration; import java.util.Properties; public class ReflectTest { public static void main(String[] args) throws Exception { //1、加载配置文件 //1.1创建Properties对象 Properties pro = new Properties(); //1.2加载配置文件,转换为一个集合 //1.2.1获取class目录下的配置文件 ClassLoader classLoader = ReflectTest.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("pro.properties"); pro.load(is); //2、获取配置文件中定义的数据 String className = pro.getProperty("className"); String methodName = pro.getProperty("methodName"); //3、加载该类进内存 Class cls = Class.forName(className); //4、创建对象 Object obj = cls.getConstructor().newInstance(); //5、获取方法对象 Method method = cls.getMethod(methodName); //6、执行方法 method.invoke(obj); } }
配置文件:.properties后缀,可在不改动代码的前提下,改配置文件
运行结果:
配置文件:运行上面的Person类,改配置文件
运行结果:
分类:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)