框架解决的核心问题:对于不知道类名的类,就不能直接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]
复制代码
|
|