黑马程序员技术交流社区

标题: properties的集合中的小问题 [打印本页]

作者: 冯伟超    时间: 2012-12-18 23:24
标题: properties的集合中的小问题
Properties p=new Properties();
                p.put("张三", "29");
                p.put("李四", "25");
                p.put("王五", "30");
                p.put("旺财", "29");
               
                FileWriter fw=new FileWriter("t.txt");
                p.store(fw, null);
                             //这里只是进行描述的语句,如果不想进行描述,可以使用null来表示
                fw.close();


在这里面的话,如果我将:"29"的键值改为29,为什么抛异常,抛是类型转换异常,我不明白的额一点是
在向集合中添加数据时,整形数据会自动的封装成Integer的引用类型的,而这里为什么还会抛出类型
  转换异常呢?
作者: 黑马黄涛    时间: 2012-12-18 23:43
呵呵...首先很感谢你,我还没想过这个问题,看了你的问题我也奇怪了,就上网去查了查...没有搜索出来啥
不过看见了一句话我明白了些许:因为Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的keys和values...,但是在store()方法运行时候会报错的,如果没有store()方法不会报错,当然也不会存储了...
但是,存入不是用的put方法,而是SetProperties(String)方法...
作者: 黑马黄涛    时间: 2012-12-18 23:46
好问题,好想法...
但是Properties为什么要继承HashTable方法呢? 这是为什么呢?为什么呢?~~  不行...睡觉 明天再看看...睡觉了  晚安~{:soso_e175:}
作者: 黄小贝    时间: 2012-12-19 06:57
抛出的异常为 java.lang.Integer cannot be cast to java.lang.String,这就说明已经把int装箱成Integer 了

出错的原因在于,store方法



至于为什么会继承Hashtable,这就是第一个JDK版本的开发人员干的好事了,原来的设计很丑陋,但是又不能删掉(考虑兼容的问题),就只好写上不建议使用

作者: 黑马黄涛    时间: 2012-12-19 16:06
黄小贝 发表于 2012-12-19 06:57
抛出的异常为 java.lang.Integer cannot be cast to java.lang.String,这就说明已经把int装箱成Integer 了 ...

wa,原来是个历史问题~~
作者: filter    时间: 2012-12-19 17:23
下次有异常在异常的地方按ALT+/帮助键,查看方法的参数信息,再结合文档查看
希望能帮到你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2