反射的作用->实现框架功能
·框架与框架要解决的核心问题
-我做房子卖给用户住,由用户自己安装门窗和空调,我做的房子就是框架,用户需要使用我的框架,把门窗插入进我提供的框架中。框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。
你做的门调用锁,锁是工具,你做的门被房子调用,房子时框架,房子和锁都是别人提供的。
·框架要解决的核心问题
-我在写框架(房子)时,你这个用户可能还在上小学,还不会写程序呢?我写的框架程序怎么样能调用到你以后写的类(门窗)呢?
-因为在写程序时无法知道要被调用的类名,所以,在程序中无法直接new某个类的实例对象类,而要用反射方式来做。
·综合案例
-先直接用new语句创建ArrayList和HashSet的实例对象,演示用eclipse自动生成ReflectPoint类的equals和hashCode方法,比较两个集合 的运行结果差异。
-然后改为采用配置文件加反射的方式创建ArrayList和HashSet的实例对象,比较观察运行结果差异。
InputStream in = new FileInputStream("config.properties");
Properties props = new Properties();
props.load(in);
in.close();
String defaultValue = "java.util.HashSet";
String className = props.getProperty("className",defaultValue);
Collection collections = (Collection) Class.forName(className).newInstance();
-引入eclipse对资源文件的管理方式的讲解,用类加载器的方式管理资源和配置文件.
//InputStream in = ReflectTest2.class.getClassLoader().getResourceAsStream("lqq/heima/config.properties");
//InputStream in = ReflectTest2.class.getResourceAsStream("/lqq/heima/config.properties");
//InputStream in = ReflectTest2.class.getResourceAsStream("config.properties");
//InputStream in = ReflectTest2.class.getResourceAsStream("resources/config.properties");
InputStream in = ReflectTest2.class.getResourceAsStream("/lqq/heima/resources/config.properties");
框架的概念及用反射技术开发框架的原理
最新推荐文章于 2021-02-21 12:35:09 发布