推薦淘寶秋冬男裝熱賣網(wǎng)店

          追求無止境

          我的程序人生
          隨筆 - 31, 文章 - 2, 評論 - 20, 引用 - 0
          數(shù)據(jù)加載中……

          [轉(zhuǎn)] java.beans.PropertyEditor(屬性編輯器)簡單應(yīng)用

          原文:http://www.aygfsteel.com/orangewhy/archive/2007/06/26/126371.html

          java.beans.PropertyEditor的從字義來看是一個屬性編輯器,但總覺得它的作用更像一個轉(zhuǎn)換器--從字符串轉(zhuǎn)換為類對象的屬性。

          java.beans.PropertyEditor接口定義的方法有好幾個,但是最重要為下面兩個:

           void setValue(Object value)

           void setAsText(String text) throws java.lang.IllegalArgumentException;

          一般地,我們要使用PropertyEditor時,并不直接實現(xiàn)此接口,而是通過繼承實現(xiàn)此接口的java.beans.PropertyEditorSupport來簡化我們的工作,在子類覆蓋setAsText方法就可以了,setValue方法一般不直接使用,在setAsText方法中將字符串進(jìn)行轉(zhuǎn)換并產(chǎn)生目標(biāo)對象以后,由調(diào)setAsText調(diào)用setValue來把目標(biāo)對象注入到編輯器中。當(dāng)然,你可用覆蓋更多的方法來滿足你的特殊要求。JavaBean的類和接口,被大部分spring包使用,可以從spring中學(xué)習(xí)更成熟的JavaBean使用方法。

          簡單的例子:

          實體類Person:

          public class Person
          {
              
          private String name;
              
          private String sex;
              
          private int age;
              
              
          public Person(String name, String sex, int age)
              
          {
                  
          this.name = name;
                  
          this.sex = sex;
                  
          this.age = age;
              }

              
              
          public int getAge()
              
          {
                  
          return age;
              }

              
          public void setAge(int age)
              
          {
                  
          this.age = age;
              }

              
          public String getName()
              
          {
                  
          return name;
              }

              
          public void setName(String name)
              
          {
                  
          this.name = name;
              }

              
          public String getSex()
              
          {
                  
          return sex;
              }

              
          public void setSex(String sex)
              
          {
                  
          this.sex = sex;
              }

              
              @Override
              
          public String toString()
              
          {
                  
          return "Person["+name+""+sex+""+age+"]";
              }

          }

           

          Person的屬性編輯器:

          public class PersonPropertyEditor extends PropertyEditorSupport
          {
              
          public void setAsText(String text)
              
          {
                  setValue(parseString(text));
              }


              
          private Object parseString(String text)
              
          {
                  String[] parts 
          = tokenizeToStringArray(text, ""falsefalse);
                  String name 
          = (parts.length > 0 ? parts[0] : "undefine");
                  String sex 
          = (parts.length > 1 ? parts[1] : "undefine");
                  
          int age = (parts.length > 2 ? Integer.valueOf(parts[2]) : 0);
                  
          return (text.length() > 0 ? new Person(name, sex, age) : null);
              }


              
          private  String[] tokenizeToStringArray(String str, String delimiters, boolean trimTokens,
                                                              
          boolean ignoreEmptyTokens)
              
          {
                  StringTokenizer st 
          = new StringTokenizer(str, delimiters);
                  List tokens 
          = new ArrayList();
                  
          while(st.hasMoreTokens())
                  
          {
                      String token 
          = st.nextToken();
                      
          if(trimTokens)
                      
          {
                          token 
          = token.trim();
                      }

                      
          if(!ignoreEmptyTokens || token.length() > 0)
                      
          {
                          tokens.add(token);
                      }

                  }

                  
          return toStringArray(tokens);
              }


              
          private  String[] toStringArray(Collection collection)
              
          {
                  
          if(collection == null)
                  
          {
                      
          return null;
                  }

                  
          return (String[])collection.toArray(new String[collection.size()]);
              }

          }

           

          測試代碼:

              public static void main(String[] args)
              
          {
                  PersonPropertyEditor editor 
          = new PersonPropertyEditor();
                  editor.setAsText(
          "aSam,man,22");
                  System.out.println(editor.getValue());
              }

           

          結(jié)果輸出:

          Person[aSam, man, 22]

          posted on 2009-11-20 22:07 追求無止境 閱讀(297) 評論(0)  編輯  收藏 所屬分類: Java


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 邯郸县| 内黄县| 新沂市| 滦南县| 宁乡县| 吴旗县| 新营市| 隆尧县| 文登市| 锡林郭勒盟| 曲靖市| 平顶山市| 扶绥县| 湖南省| 上虞市| 韩城市| 兴山县| 双江| 洪泽县| 理塘县| 科尔| 绥滨县| 沙洋县| 桓仁| 安平县| 泉州市| 天门市| 金堂县| 当雄县| 房山区| 壶关县| 泉州市| 衢州市| 临江市| 宁波市| 霍城县| 吴忠市| 旺苍县| 芦溪县| 朔州市| 三台县|