我想实现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;
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【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  %                  
    敬礼!
      

  2.   

    好像你就是想拷贝下bean样的,用beanUtil吧
      

  3.   

    import java.beans.BeanInfo;
    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;
        }   
    }