耐心無止境 成功一瞬間

          BlogJava 聯系 聚合 管理
            31 Posts :: 5 Stories :: 25 Comments :: 0 Trackbacks
          眾所周知,java中Properties類繼承于Hashtable,但是它的目的是只存儲string,如果用法不當可能會造成無法取出數據。

          例子:

          1?Properties?prop=new?Properties();
          2?prop.put("id","12");
          3?prop.put("price",new?BigDecimal(4));
          4?System.out.println("prop="+prop.toString());
          5?String?price=prop.getProperty("price");
          6?System.out.println("price="+price);
          7?


          打印的結果可能象下面所示
          第4行的結果:prop={id=12,price=4}
          第6行的結果:price=null


          為什么取出來的price為null,而不是我們傳入的值4??

          1.首先讓我們看下jdk中getProperty的源碼

          1?public?String?getProperty(String?key)?{
          2????Object?oval?=?super.get(key);
          3????String?sval?=?(oval?instanceof?String)???(String)oval?:?null;
          4????return?((sval?==?null)?&&?(defaults?!=?null))???defaults.getProperty(key)?:?sval;
          5????}

          從第3行可以看出,如果Properties中的value不是String的實例就會返回null。


          2。在例子中,我們用put方法傳入了BigDecimal的實例,因此取出的時候返回了null。

          為了避免這種情況的出現,我們用Properties時應該使用setProperty和getProperty方法,但這樣會限制傳入的只能是String的實例。
          posted on 2006-10-27 11:00 Joshua Yan 閱讀(1881) 評論(4)  編輯  收藏 所屬分類: Java

          Feedback

          # re: 注意properties的使用 2006-10-27 13:03 soddabao
          那還不如使用List或是Map。Properties我只是再讀屬性文件的時候使用過  回復  更多評論
            

          # re: 注意properties的使用 2006-10-30 08:47 itvincent[匿名]
          如果是put進去就應該get出來,是setProperty進去,就getProperty出來,用Properties 應該使用后者  回復  更多評論
            

          # re: 注意properties的使用 2006-11-07 19:16 CowNew開源團隊
          我感覺Properties 是jdk中的一個敗筆,Properties 竟然從Hashtable繼承,難道弄不懂組合復用和繼承復用的區別嗎?  回復  更多評論
            

          # re: 注意properties的使用 2006-12-31 13:48 Enson
          @CowNew開源團隊
          樓上的,Hashtable可以讀取.properties文件嗎。你用Hashtable給我讀個試試。  回復  更多評論
            

          主站蜘蛛池模板: 齐齐哈尔市| 杭州市| 邵阳县| 泗阳县| 宣化县| 云安县| 赞皇县| 涿州市| 大余县| 沙坪坝区| 曲麻莱县| 界首市| 大悟县| 嘉义县| 图片| 大宁县| 车险| 民和| 鸡泽县| 西城区| 贡觉县| 凤凰县| 宣城市| 固阳县| 剑河县| 马鞍山市| 盘山县| 三台县| 肥城市| 新源县| 赤壁市| 永宁县| 全椒县| 敦煌市| 衡阳市| 华蓥市| 阳曲县| 兴国县| 阿克苏市| 鄂伦春自治旗| 阆中市|