1.实体类
public class ReflectModel {
private String fdUserName;
private String fdUserPwd;
private String fdAge;
private String fdSex;
public String getFdUserName() {
return fdUserName;
}
public void setFdUserName(String fdUserName) {
this.fdUserName = fdUserName;
}
public String getFdUserPwd() {
return fdUserPwd;
}
public void setFdUserPwd(String fdUserPwd) {
this.fdUserPwd = fdUserPwd;
}
public String getFdAge() {
return fdAge;
}
public void setFdAge(String fdAge) {
this.fdAge = fdAge;
}
public String getFdSex() {
return fdSex;
}
public void setFdSex(String fdSex) {
this.fdSex = fdSex;
}
}
2.利用反射机制动态给实体类所有属性赋值
public class ReflectTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ReflectModel model = new ReflectModel();
Field[] field = model.getClass().getDeclaredFields(); // 获取实体类的所有属性
String fdUserName = "zhouzj";
String fdUserPwd = "123";
String fdAge = "18";
String fdSex = "男";
String[] strArray = new String[]{fdUserName,fdUserPwd,fdAge,fdSex};
Map<String , String> map1 = new HashMap<String, String>();
for(int i=0;i<field.length;i++){
String key = field[i].getName();
map1.put(key, strArray[i]);
}
try {
for (int j = 0; j < field.length; j++) {
String name = field[j].getName(); //获取属性名
String oldName = name;
System.out.println("field name:" + name);
name = name.substring(0, 1).toUpperCase() + name.substring(1);
String type = field[j].getGenericType().toString(); //获取属性的类型
if (type.equals("class java.lang.String")) { // 如果type是类类型,则class后面跟类名
Method m = model.getClass().getMethod("set" + name,
String.class);
m.invoke(model, map1.get(oldName));
}
}
for (Field field2 : field) {//输出属性值,方法1
String name = field2.getName();
field2.setAccessible(true);
System.out.println("方法1输出"+name + " value:" + field2.get(model));
}
for (Field field2 : field) {//输出属性值,方法2
String name = field2.getName();
name = name.substring(0, 1).toUpperCase() + name.substring(1);
Method m = model.getClass().getMethod("get" + name);
String val = (String) m.invoke(model);
System.out.println("方法2输出"+name + " value:" + val);
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}