private <%=className%>(String type)
{
super();
this
}
public int hashCode()
{
final int PRIME =
int result =
result = PRIME * result + ((type == null) ?
return result;
}
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj
return false;
final <%=className%> other = (<%=className%>) obj;
if (type == null)
{
if (other
return false;
} else if (!type
return false;
return true;
}
}
這個模板文件是非常簡單的
l 文件頭的imports屬性是用來定義生成的代碼的import列表的
imports= imports=
不能使用其他分隔符
l 由於傳遞進來的參數是一個JavaBean
EnumGenArgInfo argInfo = (EnumGenArgInfo)argument;
編寫下面的代碼測試一下這個代碼模板
public static void main(String[] args)
{
EnumCodeGenerator gen = new EnumCodeGenerator();
EnumGenArgInfo argInfo = new EnumGenArgInfo();
argInfo
Set<String> items = new HashSet<String>();
items
items
argInfo
argInfo
System
}
運行之後發現輸出的代碼完全正確
這樣我們就可以來完成EnumCodeGenUtils類的getEnumSourceCode方法
【代碼
public static String getEnumSourceCode(String packageName
Set<String> itemDefSet)
{
Pattern pattern = Pattern
Matcher mat = pattern
mat
String className = mat
EnumCodeGenerator gen = new EnumCodeGenerator();
EnumGenArgInfo argInfo = new EnumGenArgInfo();
argInfo
argInfo
argInfo
return gen
}
這裡用到了正則表達式來從Java文件名中提取類名
right
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29012.html