public class MyTest {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name; }
} MyTest test =new MyTest();
test.setName("test");
Class c = test.getClass();
我想先遍历出MyTest的字段,然后根据对应的字段获取相应的值,不知道怎么解决?

解决方案 »

  1.   

    仅供参考
    import java.lang.reflect.Field;public class Test4Class { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test4Class tc = new Test4Class();
    Class c = tc.getClass();
    Field[] fs = c.getDeclaredFields();
    for (int i =0 ;i < fs.length;i++){
    try {
    System.out.println(fs[i].get(tc));
    } catch (IllegalArgumentException e) {
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    }
    }
    } private int i = 0;
    private String str = "string";
    private double d = 1.23;
    }
      

  2.   

    把发给你的另一个帖子的代码缩减了一下public class Student {
    private int studid; private String major; private double age; public Student() {
    } public Student(int studid, String major, double age) {
    this.studid = studid;
    this.major = major;
    this.age = age;
    } @Override
    public String toString() {
    return "";
    } public int getStudid() {
    return studid;
    } public void setStudid(int studid) {
    this.studid = studid;
    } public String getMajor() {
    return major;
    } public void setMajor(String major) {
    this.major = major;
    } public double getAge() {
    return age;
    } public void setAge(double age) {
    this.age = age;
    }
    }import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;public class ProduceSQL {
    public static void main(String[] args) {
    Student stud=new Student(1058,"计算机科学与技术", 22);
    productInsertSQL(stud);
    } @SuppressWarnings("unchecked")
    public static void productInsertSQL(Student stud) {
    Class cs = stud.getClass(); Field field[] = cs.getDeclaredFields();
    for (int i = 0; i < field.length; i++) {
    String fieldname = field[i].getName();
    //根据字段属性,构造方法
    String method="get"+fieldname.substring(0, 1).toUpperCase()+fieldname.substring(1);
    try {
                                    //可以根据字段名称,打印你所希望的字段的值...
    Method methodd = cs.getMethod(method, null);
    Object returnobject = methodd.invoke(stud, null);
    System.out.println(returnobject);
    } catch (SecurityException e) {
    e.printStackTrace();
    } catch (NoSuchMethodException e) {
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    e.printStackTrace();
    }
    }
    }}