1框架与框架要解决的核心问题
比如 我做房子卖给用户,由用户自己去安装窗和们 我做的房子就是框架 用户需
要实用我的框架 把门和窗户插入到我的房子里面
框架与工具类有区别?
工具类被用户的类调用 内框架则是调用用户提供的类
2 框架要解决的核心问题
我在做房子(框架)时,你这个用户可能还在上小学 还不会写程序呢 我的框架怎
么去调用你以后写的类(门窗)呢?
因为在写程序时无法知道要调用的类名 所以 在程序中无法直接new 某个类的实例
出来 而要通过反射的方法来实现
3 通过类加载器 去找到配置文件的路径
下面通过配置文件写一个小例子
package com.sg.reflex;
import java.io.InputStream;
import java.util.Collection;
import java.util.Properties;
public class FrameReflexTest {
public static void main(String[] args) throws Exception{
//首先加载配置文件 config.properties在这里直接放在工程的目录下面了
//一般放在新建的某个包文件下面 通过绝对路径去找到
//InputStream ips = new FileInputStream("config.properties");
//通过类加载器 去找到配置文件的路径 加入配置文件放在了
//InputStream ips = FrameReflexTest.class.getClassLoader().getResourceAsStream("com/sg/config/config.properties");
//还可以使用 前提是和你的类在同一个包下面就可以不用下包名 直接写文件名
InputStream ips = FrameReflexTest.class.getResourceAsStream("config.properties");
Properties properties = new Properties();
properties.load(ips);
properties.clone();
//获取配置文件的key为className的value值
String className = String.valueOf(properties.get("className"));
//通过反射newInstance()实例化
Collection collections = (Collection) Class.forName(className).newInstance();
ReflecClassPoint rcp1 = new ReflecClassPoint(3, 3);
ReflecClassPoint rcp2 = new ReflecClassPoint(5, 5);
ReflecClassPoint rcp3 = new ReflecClassPoint(3, 3);
//把这些对象 放到集合中去
collections.add(rcp1);
collections.add(rcp2);
collections.add(rcp3);
collections.add(rcp1);
System.out.println(collections.size());
}
}