——此文章摘自《自己动手写开发工具
基于Eclipse的工具开发》定价
¥
特价
¥
详细>>http://track
linktech
cn/?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>] []