黑马程序员技术交流社区
标题:
反射的作用-实现框架功能
[打印本页]
作者:
考拉是只猫
时间:
2014-12-2 21:50
标题:
反射的作用-实现框架功能
框架解决的核心问题:对于不知道类名的类,就不能直接new 的方式创建他的实例对象了,
这时,使用反射来调用不知道类名的类。
练习:通过采用配置文件和反射方式创建ArrayList或HashSet的实例对象。
思路:采用类加载器的方式管理资源和配置文件。
通过里加载器来加载配置文件,Java在一个类在执行的时候,Java系统通过类加载器在类文件的目录下逐个查找
要执行的类,找到后就将该类的.class文件加载到Java虚拟机中运行。我们可以利用这种方式将Java程序的配置
文件放到.class的根目录下,然后让类加载器扫描并能够加载该文件。
// 反射方式创建ArrayList或HashSet的实例对象
// 两种方式
// 第一种 使用反射获得类加载器,并加载配置文件
ClassLoader loader=ReflectFrame.class.getClassLoader();
InputStream ips = loader.getResourceAsStream("com/itheima/config.properties");
// 第二种 ,直接指定文件名即可其内部实现也是调用的类加载器
// InputStream ips=ReflectFrame.class.getResourceAsStream("config.properties");
Properties props = new Properties();
props.load(ips);// 加载配置文件键值对
String className = props.getProperty("className");
// 通过配置文件提供的类名创建Collection对象
Collection collection = (Collection) Class.forName(className).newInstance();
collection.add("aaa");
collection.add("sss");
System.out.println(collection);//[aaa, sss]
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2