我想实现form功能可是在类型转换不太会做了。
public static void main(String[] args) throws ClassNotFoundException {
UserInfoBean bean = new UserInfoBean();
bean = (UserInfoBean)getForm(UserInfoBean.class);
System.out.println("userName="+bean.getUserName());
System.out.println("userPwd="+bean.getPwd());
}
public static Object getForm(Class objClass){
Object obj =null;
try {
obj = objClass.newInstance();
Field[] ff = objClass.getDeclaredFields();
String[] ager = {"gcm","gcm11","11"};
for(int i=0;i<ff.length-1;i++){
Method mm = objClass.getDeclaredMethod(setField(ff[i].getName()),ff[i].getType());
//在这里ager[i]如何将类型转换成ff[i].getName()的类型
mm.invoke(obj, ager[i]);
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}//获取字段的SET方法
public static String setField(String str){
return str.replaceFirst(str.substring(0, 1), "set"+str.substring(0, 1).toUpperCase());
}
UserInfoBean.java
public class UserInfoBean {
private String userName;
private String pwd;
private int age;
public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
}
}
public static void main(String[] args) throws ClassNotFoundException {
UserInfoBean bean = new UserInfoBean();
bean = (UserInfoBean)getForm(UserInfoBean.class);
System.out.println("userName="+bean.getUserName());
System.out.println("userPwd="+bean.getPwd());
}
public static Object getForm(Class objClass){
Object obj =null;
try {
obj = objClass.newInstance();
Field[] ff = objClass.getDeclaredFields();
String[] ager = {"gcm","gcm11","11"};
for(int i=0;i<ff.length-1;i++){
Method mm = objClass.getDeclaredMethod(setField(ff[i].getName()),ff[i].getType());
//在这里ager[i]如何将类型转换成ff[i].getName()的类型
mm.invoke(obj, ager[i]);
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}//获取字段的SET方法
public static String setField(String str){
return str.replaceFirst(str.substring(0, 1), "set"+str.substring(0, 1).toUpperCase());
}
UserInfoBean.java
public class UserInfoBean {
private String userName;
private String pwd;
private int age;
public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
}
}
楼主【java5211314】截止到2008-07-15 10:38:48的历史汇总数据(不包括此帖):
发帖的总数量:2 发帖的总分数:40 每贴平均分数:20
回帖的总数量:43 得分贴总数量:20 回帖的得分率:46%
结贴的总数量:2 结贴的总分数:40
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;public class Test01 {
public static void main(String[] args) {
Person person = new Person();
person.setName("abc");
person.setAge(2);
Student student = new Student();
BeanUtil.copyBean(person, student);
System.out.println(student.getName() + ", " + student.getAge() + ", " + student.getGrade());
}
}class BeanUtil {
public static <S, D extends S> void copyBean(S src, D dist) {
try {
BeanInfo bean = Introspector.getBeanInfo(src.getClass());
PropertyDescriptor[] properties = bean.getPropertyDescriptors();
for(int i = 0; i < properties.length; i++) {
Method get = properties[i].getReadMethod();
if(get == null) {
continue;
}
Method set = properties[i].getWriteMethod();
if(set == null) {
continue;
}
set.invoke(dist, new Object[]{get.invoke(src, new Object[0])});
}
} catch (Exception e) {
e.printStackTrace();
}
}
}class Person {
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}class Student extends Person {
private String grade;
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}