耐心無止境 成功一瞬間

          BlogJava 聯(lián)系 聚合 管理
            31 Posts :: 5 Stories :: 25 Comments :: 0 Trackbacks
          眾所周知,java中Properties類繼承于Hashtable,但是它的目的是只存儲(chǔ)string,如果用法不當(dāng)可能會(huì)造成無法取出數(shù)據(jù)。

          例子:

          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?


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


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

          1.首先讓我們看下jdk中g(shù)etProperty的源碼

          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的實(shí)例就會(huì)返回null。


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

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

          Feedback

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

          # re: 注意properties的使用 2006-10-30 08:47 itvincent[匿名]
          如果是put進(jìn)去就應(yīng)該get出來,是setProperty進(jìn)去,就getProperty出來,用Properties 應(yīng)該使用后者  回復(fù)  更多評(píng)論
            

          # re: 注意properties的使用 2006-11-07 19:16 CowNew開源團(tuán)隊(duì)
          我感覺Properties 是jdk中的一個(gè)敗筆,Properties 竟然從Hashtable繼承,難道弄不懂組合復(fù)用和繼承復(fù)用的區(qū)別嗎?  回復(fù)  更多評(píng)論
            

          # re: 注意properties的使用 2006-12-31 13:48 Enson
          @CowNew開源團(tuán)隊(duì)
          樓上的,Hashtable可以讀取.properties文件嗎。你用Hashtable給我讀個(gè)試試。  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 黄平县| 泽库县| 宜丰县| 赤壁市| 兴宁市| 道孚县| 合山市| 天全县| 扶余县| 云浮市| 红桥区| 扬中市| 渭南市| 平陆县| 兴化市| 定南县| 汝南县| 安陆市| 崇州市| 北流市| 合阳县| 三穗县| 德昌县| 南丰县| 东海县| 南宫市| 富平县| 龙陵县| 鹿邑县| 武夷山市| 清水河县| 宝应县| 玉溪市| 洪泽县| 乐山市| 昆山市| 青海省| 磴口县| 盐边县| 墨玉县| 嘉禾县|