A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯伟超 中级黑马   /  2012-12-18 23:24  /  1321 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的引用类型的,而这里为什么还会抛出类型
  转换异常呢?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

5 个回复

倒序浏览
呵呵...首先很感谢你,我还没想过这个问题,看了你的问题我也奇怪了,就上网去查了查...没有搜索出来啥
不过看见了一句话我明白了些许:因为Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的keys和values...,但是在store()方法运行时候会报错的,如果没有store()方法不会报错,当然也不会存储了...
但是,存入不是用的put方法,而是SetProperties(String)方法...

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
好问题,好想法...
但是Properties为什么要继承HashTable方法呢? 这是为什么呢?为什么呢?~~  不行...睡觉 明天再看看...睡觉了  晚安~{:soso_e175:}
回复 使用道具 举报
抛出的异常为 java.lang.Integer cannot be cast to java.lang.String,这就说明已经把int装箱成Integer 了

出错的原因在于,store方法



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

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
黄小贝 发表于 2012-12-19 06:57
抛出的异常为 java.lang.Integer cannot be cast to java.lang.String,这就说明已经把int装箱成Integer 了 ...

wa,原来是个历史问题~~
回复 使用道具 举报
下次有异常在异常的地方按ALT+/帮助键,查看方法的参数信息,再结合文档查看
希望能帮到你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马