JavaWeb反射简单小案例

该博客介绍了如何通过配置文件和Java反射技术,在不修改原有类代码的情况下,动态创建对象并执行指定方法。示例中展示了加载配置文件、获取类名和方法名、加载类、实例化对象及调用方法的完整流程,实现了代码的灵活性和可扩展性。
摘要由CSDN通过智能技术生成
需求:

写一个“框架”,在不能改变该类的任何代码的前提下,可以创建任意类的对象,并且执行其中任意方法

实现:
  1. 配置文件
  2. 反射
步骤:
  1. 将需要创建的对象的全类名和需要执行的方法定义在配置文件中
  2. 在程序中加载读取配置文件
  3. 使用反射技术来加载类文件进内存
  4. 创建对象
  5. 执行方法
目录结构:

在这里插入图片描述

代码实现:
  • Student.java
	package domain;
	
	public class Student {
	    public void sleep() {
	        System.out.println("sleep...");
	    }
	}
  • Person.java

	package domain;
	
	public class Person {
	    private String name;
	    private int age;
	
	    public Person() {
	    }
	
	    public Person(String name, int age) {
	        this.name = name;
	        this.age = age;
	    }
	
	    public void eat(){
	        System.out.println("eat...");
	    }
	}
  • ReflectDemo2.java
	package reflect;
	
	import java.io.InputStream;
	import java.lang.reflect.Method;
	import java.util.Properties;
	
	public class ReflectDemo2 {
	    public static void main(String[] args) throws Exception {
	
	        // 1.加载配置文件
	        // 1.1 创建properties对象
	        Properties pro = new Properties();
	        // 1.2 加载配置文件,转换为一个集合
	        // 1.2.1 获取class目录下的配置文件
	        ClassLoader classLoader = ReflectDemo2.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.newInstance();
	        // 5. 获取方法对象
	        Method method = cls.getMethod(methodName);
	        // 6. 执行方法
	        method.invoke(obj);
	
	
	    }
	}

运行结果:

  1. 配置文件 pro.properties为
	className=domain.Student
	methodName=sleep

在这里插入图片描述

  1. 配置文件pro.properties为
	className=domain.Person
	methodName=eat

在这里插入图片描述

即修改配置文件可运行不同程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值