耐心無止境 成功一瞬間

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

          主站蜘蛛池模板: 遵义市| 乐山市| 建瓯市| 剑川县| 东山县| 工布江达县| 理塘县| 温泉县| 湖北省| 巴塘县| 霍城县| 新干县| 谷城县| 天柱县| 兴仁县| 望城县| 宜阳县| 东方市| 大姚县| 利辛县| 溧阳市| 长顺县| 平阴县| 咸宁市| 宜章县| 贺州市| 辽阳县| 平陆县| 尼勒克县| 昂仁县| 蒙阴县| 临洮县| 陇西县| 许昌县| 南京市| 鹰潭市| 蒲江县| 台湾省| 兰考县| 琼结县| 吉木乃县|