练习-反射
需求:写一个“框架”,不能改变类的任何代码的前提下,可以帮我们创建任意类的对象 并且执行其中任意方法
实现:
1.配置文件
2.反射
步骤:
1. 将需要创建的对象的全类名和需要执行的方法定义在配置文件中
2.在程序中加载读取配置文件
3.使用反射技术来加载类文件内存
4.创建对象
5.执行方法
代码:
学生类:
public class Student {
// 创建了一个sleep方法 public void sleep(){ System.out.println("sleep~"); } }
Person类:
public class Person {
// 成员变量 public String name; public int age; private int a; int ab; public Person(String name, int age) { this.name = name; this.age = age; } public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } // 成员方法 public void eat(){ System.out.println("吃东西"); } }
配置类:
className=bai.demoReflect.Student methodName=sleep
测试类:
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.newInstance(); // 5.获取方法对象 Method method = cls.getMethod(methodName); // 6.执行方法 method.invoke(obj); }标签:反射,String,配置文件,int,age,案例,public,name From: https://www.cnblogs.com/shenziyi/p/16810106.html