import cn.jsfund.hrdegital.controller.vo.EmployeeBaseInformationVo;
import cn.jsfund.hrdegital.services.exceldata.ExcelReportGsData;
import java.lang.reflect.Field;
public class GetSetTest {
public static void main(String[] args) {
String result = setOrGetValues(new ExcelReportGsData.GsPerfiskHomePage(), 1);
System.err.println(result);
}
/**
* @param bean 对象
* @param step 0 get ,1 set
* @return 结果
*/
public static String setOrGetValues(Object bean, int step) {
if (step == 0) {
return classGetValues(bean);
} else if (step == 1) {
return classSetValues(bean);
} else {
return null;
}
}
//生成set方法赋值
public static String classSetValues(Object bean) {
StringBuffer sb = new StringBuffer();
String simpleName = bean.getClass().getSimpleName();
String beanName = lowerCaseInitials(simpleName);
sb.append("" + simpleName + " " + beanName + " = new " + simpleName + "();" + "\n");
for (Field field : bean.getClass().getDeclaredFields()) {
String propname = field.getName();
sb.append(beanName + ".set" + upperCaseInitials(propname) + "(null);\n");
}
return sb.toString();
}
//生成get方法取值
public static String classGetValues(Object bean) {
StringBuffer sb = new StringBuffer();
String beanName = lowerCaseInitials(bean.getClass().getSimpleName());
for (Field field : bean.getClass().getDeclaredFields()) {
String propname = field.getName();
sb.append(field.getType().getSimpleName() + " " + lowerCaseInitials(propname) + "=" + beanName + ".get" + upperCaseInitials(propname) + "();\n");
}
return sb.toString();
}
//首字母大写
public static String upperCaseInitials(String name) {
//将string类型转化成char类型
char[] cs = name.toCharArray();
char initial = cs[0];
if (!Character.isLetter(initial)) {//不是字母的不需要转换
return name;
}
if (Character.isUpperCase(initial)) {//大写的不需要转换
return name;
}
//通过ASCII表格将首字母减32个位(ascii编码中字母大小写之间相差32个单位,大写在前小写在后)
cs[0] -= 32;
return String.valueOf(cs);
}
//首字母小写
public static String lowerCaseInitials(String name) {
//将string类型转化成char类型
char[] cs = name.toCharArray();
char initial = cs[0];
if (!Character.isUpperCase(initial)) {//不是大写的不需要转换
return name;
}
//通过ASCII表格将首字母加32个位(ascii编码中字母大小写之间相差32个单位,大写在前小写在后)
cs[0] += 32;
return String.valueOf(cs);
}
}