熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Eclipse工具開發:編寫代碼生成器[6]

2013-11-23 20:44:41  來源: Java開源技術 
    ——此文章摘自《自己動手寫開發工具基於Eclipse的工具開發》定價 特價 詳細>>http://tracklinktechcn/?m_id=dangdang&a_id=A&l=&l_type= width= height= border= nosave>

        private <%=className%>(String type)
        {
            super();
            thistype = type;
        }
        public int hashCode()
        {
            final int PRIME = ;
            int result = ;
            result = PRIME * result + ((type == null) ? : typehashCode());
            return result;
        }
        public boolean equals(Object obj)
        {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != objgetClass())
                return false;
            final <%=className%> other = (<%=className%>) obj;
            if (type == null)
            {
                if (othertype != null)
                    return false;
            } else if (!typeequals(othertype))
                return false;
            return true;
        }
    }

    這個模板文件是非常簡單的有了前面的基礎讀懂這個模板文件就非常簡單了這裡只講兩點
    l   文件頭的imports屬性是用來定義生成的代碼的import列表的這個模板中用到了集合類Set所以要用imports=javautil* 將其導入否則生成的代碼會編譯錯誤如果要導入多個類只要把它們用空格隔開即可比如
    imports= imports=javautil* javasqlDate
    不能使用其他分隔符
    l   由於傳遞進來的參數是一個JavaBean因此需要把argument進行一次轉型操作
    EnumGenArgInfo argInfo = (EnumGenArgInfo)argument;
    編寫下面的代碼測試一下這個代碼模板
    public static void main(String[] args)
    {
        EnumCodeGenerator gen = new EnumCodeGenerator();
        EnumGenArgInfo argInfo = new EnumGenArgInfo();
        argInfosetClassName(MyEnum);
        Set<String> items = new HashSet<String>();
        itemsadd(VIP);
        itemsadd(MM);
        argInfosetItems(items);
        argInfosetPackageName(comcownew);
        Systemoutprintln(gengenerate(argInfo));
    }

    運行之後發現輸出的代碼完全正確
    這樣我們就可以來完成EnumCodeGenUtils類的getEnumSourceCode方法
    【代碼】完成後的getEnumSourceCode方法
    public static String getEnumSourceCode(String packageName String fileName
            Set<String> itemDefSet)
    {
        Pattern pattern = Patterncompile((+)java);
        Matcher mat = patternmatcher(fileName);
        matfind();
        String className = matgroup();
        EnumCodeGenerator gen = new EnumCodeGenerator();
        EnumGenArgInfo argInfo = new EnumGenArgInfo();
        argInfosetClassName(className);
        argInfosetItems(itemDefSet);
        argInfosetPackageName(packageName);
        return gengenerate(argInfo);
    }

    這裡用到了正則表達式來從Java文件名中提取類名使用的是JDK中的正則表達式實現對於正則表達式我們可以去查閱相關資料正則表達式是一個非常好用的工具掌握以後能輕松解決很多字符串解析相關的問題並為學習編譯原理打下基礎

right>[http://developcsaicn/Java_Eclipse/htm>]  [http://developcsaicn/Java_Eclipse/htm>]  [http://developcsaicn/Java_Eclipse/htm>]  [http://developcsaicn/Java_Eclipse/htm>]  [http://developcsaicn/Java_Eclipse/htm>]  []  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29012.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.