黑马程序员技术交流社区
标题:
【记录】代码练习-反射运行配置文件内容
[打印本页]
作者:
Kevin.Kang
时间:
2015-8-12 13:32
标题:
【记录】代码练习-反射运行配置文件内容
本帖最后由 Kevin.Kang 于 2015-8-12 13:37 编辑
通过反射对配置文件中的类进行常见对象和调用方法,需要那个就改配置文件中的内容,不用修改程序代码就行。
Person类
package com.kxg_03;
public class Person {
public void show() {
System.out.println("Person");
}
}
复制代码
Teacher类
package com.kxg_03;
public class Teacher {
public void show() {
System.out.println("Teacher");
}
}
复制代码
Student类
package com.kxg_03;
public class Student {
public void show() {
System.out.println("Student");
}
}
复制代码
class.txt暂时替代配置文件
className=com.kxg_03.Student//修改这里的类名就可以了,记得带上包名
methodName=show//这里是需要调用类的方法
复制代码
测试类
package com.kxg_03;
import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;
/*
* 通过配置文件运行类中的方法
*
* 需要有配置文件的配合,暂时用class.txt代替,里面数据以键值对形式存在
* 并且知道其中的键:
* className
* methodName
*/
public class Test {
public static void main(String[] args) throws Exception {
// 把class.txt文件加载到Properties集合中
Properties p = new Properties();
FileReader fr = new FileReader("class.txt");
p.load(fr);
fr.close();
// 通过键找到对应的值
String className = p.getProperty("className");
String methodName = p.getProperty("methodName");
// 根据获取字节码文件对象
Class c = Class.forName(className);
// 获取无参构造
Constructor con = c.getConstructor();
// 无参构造创建对象
Object obj = con.newInstance();
// 获取无参方法
Method m = c.getMethod(methodName);
// 调用方法
m.invoke(obj);
}
}
复制代码
作者:
耀阳圣尊
时间:
2015-8-12 14:25
赞一个,楼主写的很用心
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2