手写的一款快速编辑get set方法,文档,js值解析的代码生成工具,
当面对字段很多的对象转换,构造,set等操作时,本方法可明显的提高开发效率。
生成代码
public static <T> void writeSomeEasy(Class<T> clst, WriteType writeType) {
Field[] declaredFields = clst.getDeclaredFields();
StringBuffer sb = new StringBuffer();
String clasName = clst.getSimpleName();
String newObj = clasName + " " + firstLowerCase(clasName) + "= new " + clasName + "();";
sb.append(newObj + "\r\n");
for (Field field : declaredFields) {
String fieldName = field.getName();
if ("serialVersionUID".equals(fieldName)) {
continue;
}
String objectName = firstLowerCase(clst.getSimpleName());
String simpleName = field.getType().getSimpleName();
String text = getTestByFields(writeType, fieldName, simpleName, objectName);
sb.append(text + "\r\n");
}
System.out.println(sb.toString());
//将代码拷到粘贴板上,按ctrl+v即可编写完成代码
DrinFunnyUtils.setSysClipboardText(sb.toString());
}
生成需要输出的代码
private static String getTestByFields(WriteType writeType, String fieldName, String typeName, String key) {
switch (writeType) {
case doc_param:
// |id|否|string|id|
return "|" + fieldName + " |否 |" + typeName + " |" + fieldName + " |";
case doc_result:
// |id|string|id|
return "|" + fieldName + " |" + typeName + " |" + fieldName + " |";
case str_json_getstr:
// String id=model.getString("id");
return "String " + fieldName + "= " + key + ".getString(\"" + fieldName + "\");";
case set_model:
// model.setId(id);
return key + ".set" + DrinStringUtils.firstUpperCase(fieldName) + "(" + fieldName + ");";
case set_model_withmap:
// model.setId(id);
return key + ".set" + DrinStringUtils.firstUpperCase(fieldName) + "(importMap.getString(\"\"));";
case get_set:
// model.setId(model.getId());
return key + ".set" + DrinStringUtils.firstUpperCase(fieldName) + "(" + key + ".get"
+ DrinStringUtils.firstUpperCase(fieldName) + "());";
case this_get_set:
// model.setId(this.id);
return key + ".set" + DrinStringUtils.firstUpperCase(fieldName) + "(this." + fieldName + ");";
case this_set:
// this.id=model.getId();
return "this." + fieldName + "=" + key + ".get" + DrinStringUtils.firstUpperCase(fieldName) + "();";
case type_get:
// String id=model.getId();
return typeName + " " + fieldName + " = " + key + "." + "get" + DrinStringUtils.firstUpperCase(fieldName)
+ "();";
default:
break;
}
return null;
}
生成类型枚举
public static enum WriteType {
doc_param, doc_result, str_json_getstr, set_model, get_set, this_get_set, this_set, type_get, set_model_withmap
}
将代码拷贝到粘贴板上
public static void setSysClipboardText(String writeMe) {
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable tText = new StringSelection(writeMe);
clip.setContents(tText, null);
System.out.println("请按ctrl+v见证奇迹...");
}
首字母小写
public static String firstLowerCase(String str) {
char[] charArray = str.toCharArray();
charArray[0] = (char) (charArray[0] + 32);
return new String(charArray);
}
首字母转大写
public static String firstUpperCase(String str) {
try {
char[] charArray = str.toCharArray();
charArray[0] = (char) (charArray[0] - 32);
return new String(charArray);
} catch (Exception e) {
return str;
}
}
调用示例
public static void main(String[] args) {
DrinReflectUtils.writeSomeEasy(User.class, WriteType.set_model);
}
控制参输出:
User user= new User();
user.setId(id);
user.setPassword(password);
user.setHeadImg(headImg);
user.setCreateBy(createBy);
user.setCreateDate(createDate);
user.setUpdateBy(updateBy);
user.setUpdateDate(updateDate);
user.setRemarks(remarks);
user.setDelFlag(delFlag);
user.setSort11(sort11);
user.setSort12(sort12);
user.setSort21(sort21);
user.setSort22(sort22);
user.setSort31(sort31);
user.setSort32(sort32);
user.setMobile(mobile);
user.setUserName(userName);
user.setOldName(oldName);
user.setAccount(account);
user.setPosition(position);
user.setSecondPosition(secondPosition);
user.setPostcode(postcode);
user.setCallAddress(callAddress);
user.setBirthPlace(birthPlace);
user.setGraduate(graduate);
user.setIdCard(idCard);
user.setEmail(email);
请按ctrl+v见证奇迹...