框架的概念及用反射技术开发框架的原理

反射的作用->实现框架功能
·框架与框架要解决的核心问题
 -我做房子卖给用户住,由用户自己安装门窗和空调,我做的房子就是框架,用户需要使用我的框架,把门窗插入进我提供的框架中。框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。
 你做的门调用锁,锁是工具,你做的门被房子调用,房子时框架,房子和锁都是别人提供的。
·框架要解决的核心问题
 -我在写框架(房子)时,你这个用户可能还在上小学,还不会写程序呢?我写的框架程序怎么样能调用到你以后写的类(门窗)呢?
 -因为在写程序时无法知道要被调用的类名,所以,在程序中无法直接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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值