反射

    xiaoxiao2021-04-19  155

    package cn.itcast.test; import java.io.FileReader; import java.io.FileWriter; import java.io.Writer; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Properties; /* * 通过配置文件运行类中的方法 * * 反射: * 需要有配置文件配合使用。 * 用Properties.txt代替 * 并且你知道有两个键。 * className * methodName */ public class Test { public static void main(String[] args) throws Exception { // 反射前的做法 // Student s = new Student(); // s.love(); // Teacher t = new Teacher(); // t.love(); // Worker w = new Worker(); // w.love(); // 反射后的做法 // 加载键值对数据 Properties prop = new Properties(); FileReader fr = new FileReader("Properties.txt"); prop.load(fr); fr.close(); // 获取数据 String className = prop.getProperty("className"); String methodName = prop.getProperty("methodName"); // 反射 // 获取字节码文件对象 Class c = Class.forName(className); // 获取无参构造方法并创建对象 Constructor con = c.getConstructor(); Object obj = con.newInstance(); // 调用方法 Method m1 = c.getMethod(methodName); m1.invoke(obj); } }

    #className是字节码文件 className=cn.itcast.test.Teacher methodName=love package cn.itcast.test; public class Student { public void love() { System.out.println("爱生活,爱Java"); } } package cn.itcast.test; public class Teacher { public void love(){ System.out.println("爱生活,爱迪丽热巴"); } }

    package cn.itcast.test; public class Worker { public void love() { System.out.println("爱生活,爱老婆"); } }

    转载请注明原文地址: https://ju.6miu.com/read-676085.html

    最新回复(0)