//config.txt ClassName=day15.Student FieldName=name FieldValue=lisi MethodName=study ParameterType=java.lang.Integer ParameterValue=3 import java.io.FileInputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Properties; /** * 该类读取配置文件,反射生成对应的类,然后调用该类的方法 * @author a * */ public class ReflectHW { public static void main(String args[]) throws Exception { Properties pro = new Properties(); pro.load(new FileInputStream("D:/workspace_test/ooad/src/config.txt")); Class c = null; try { //得到类 c = Class.forName(pro.getProperty("ClassName")); System.out.println("ClassName" + c.getSimpleName()); //得到实例,用默认构造函数 Object obj = c.newInstance(); //得到属性 Field f = c.getDeclaredField(pro.getProperty("FieldName")); System.out.print(f.getName() + ":"); f.setAccessible(true); //设置属性值 f.set(obj, pro.getProperty("FieldValue")); //获取属性值 String name = (String) f.get(obj); System.out.println(name); //根据方法名及方法参数类型获取方法 Method m = c.getDeclaredMethod(pro.getProperty("MethodName"), pro .get("ParameterType").getClass()); //调用方法 m.invoke(obj, pro.getProperty("ParameterValue")); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }