耐心無止境 成功一瞬間

          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 閱讀(1875) 評論(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給我讀個試試。  回復  更多評論
            

          主站蜘蛛池模板: 嘉兴市| 岚皋县| 二连浩特市| 泸西县| 库伦旗| 越西县| 陆丰市| 京山县| 石台县| 瑞昌市| 扎兰屯市| 扬中市| 葫芦岛市| 华蓥市| 介休市| 米脂县| 灵璧县| 定日县| 兖州市| 搜索| 罗江县| 松原市| 即墨市| 肃北| 海安县| 青阳县| 贵溪市| 綦江县| 永德县| 乌苏市| 湾仔区| 汾西县| 隆林| 河津市| 北宁市| 绥滨县| 塔城市| 名山县| 阳谷县| 古交市| 西城区|