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

框架与框架要解决的核心问题

我做房子卖给用户住,由用户自己安装门窗和空调,我做的房子就是框架,用户使用我的框架,把门窗插入进我的框架中。框架与工具区别,工具类被用户的类调用,而则是调用用户提供的类。(刚好相反)

框架要的核心问题

我在写框架(房子)时,你这个用户可能还在上小学,还不会写程序呢?我写的框架程序怎样能调用到你以后写的类(门窗)呢

综合案例

先用new语句创建ArrayListHashSet实像对象,演示用eclipse自动生成ReflectPont类的equalshashcode方法,比较两个集合的结果差异

后改为采用配置文件加反射方式创建ArrayListHashSet的实例对象,比较运行结果差异。

差异是有的,List集合是有序的,Set集合是无序的

例:

 

import java.io.FileInputStream; import java.io.InputStream; import java.util.*; public class ReflectTest2 { public static void main(String[] args) throws Exception { /*getRealPath();//金山词霸/内部 一定要记住用完整的路径,但完整的路径不是硬编码,而是运算出来的。 上面前面的路径要用方法去获得,应该是将区获得的路径与它下面的配合,组合成完整的路径 */ // InputStream ips = new FileInputStream("config.properties"); // InputStream ips = ReflectTest2.class.getClassLoader() // .getResourceAsStream("cn/itcast/day1/config.properties"); //用类加载器加载配置文件 // InputStream ips = ReflectTest2.class // .getResourceAsStream("resources/config.properties");//从包下开始,相对于包 InputStream ips = ReflectTest2.class .getResourceAsStream("/cn/itcast/day1/resources/config.properties");//这里使用的是绝对路径,在classpath里 Properties props = new Properties(); props.load(ips); ips.close(); String className = props.getProperty("className"); Collection collections = (Collection)Class.forName(className).newInstance(); // Collection collections = new HashSet(); ReflectPoint pt1 = new ReflectPoint(3,3); ReflectPoint pt2 = new ReflectPoint(5,5); ReflectPoint pt3 = new ReflectPoint(3,3); collections.add(pt1); collections.add(pt2); collections.add(pt3); collections.add(pt1); /* pt1.y = 7; //y属性参与了哈希码的运算,这里修改了y值,下面的代码无法将无法移除 collections.remove(pt1); */ System.out.println(collections.size()); } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值