<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>


    隨筆-35  評(píng)論-97  文章-0  trackbacks-0

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

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

     void setValue(Object value)

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

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

    簡(jiǎn)單的例子:

    實(shí)體類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()]);
        }

    }

     

    測(cè)試代碼:

        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 2007-06-26 16:46 三告習(xí)習(xí) 閱讀(6693) 評(píng)論(0)  編輯  收藏 所屬分類: java/jdk
    主站蜘蛛池模板: 亚洲成a人片在线观看国产| 三年片免费高清版| 亚洲色偷偷偷综合网| 亚洲婷婷在线视频| 亚洲理论在线观看| 亚洲福利电影一区二区?| 亚洲综合男人的天堂色婷婷| 亚洲精品日韩中文字幕久久久| 久久精品亚洲精品国产色婷| 中文字幕成人免费视频| 国产羞羞的视频在线观看免费| 国产情侣久久久久aⅴ免费| 精品国产一区二区三区免费| 久久99精品视免费看| 亚洲成人免费网址| 国产精品综合专区中文字幕免费播放 | 窝窝影视午夜看片免费| 日日躁狠狠躁狠狠爱免费视频| 一级做a免费视频观看网站| 中国内地毛片免费高清| 国产午夜精品免费一区二区三区 | 亚洲日本国产综合高清| 亚洲av无码偷拍在线观看| 美女被免费视频网站a| aa在线免费观看| 色欲A∨无码蜜臀AV免费播 | 免费久久人人爽人人爽av| 激情小说亚洲色图| 大妹子影视剧在线观看全集免费| 免费看少妇高潮成人片| 97性无码区免费| 国产又大又长又粗又硬的免费视频| 免费国内精品久久久久影院| 国产亚洲成av人片在线观看| 亚洲国产精品久久网午夜| 在线观看亚洲精品专区| 国产成人精品日本亚洲专| 亚洲国产成人精品电影| 国产在亚洲线视频观看| 国产精品区免费视频| 亚洲人成电影网站免费|