Public class Man{
  private int age;
  private String name;
  ...  public int getAge(){
    return age;
  }
  public int getName(){
    return name;
  }
  .....  public void setAge(int age){
    this.age=age;
  }
  public void setName(String name){
    this.name=name;
  }
  .....
}
  Man man=new Man();
  man.setAge(20);
  man.setName("James");
  ...假设我不知道上面Man这个类有哪些属性,但我想的到它的对象(man)的属性名和属性值,请问大家能不能实现上述功能?若能,应该怎样做?

解决方案 »

  1.   

    Class c = man.getClass();c.getDeclaredFields() ;自己看看Class 这个类的用法
      

  2.   

    import java.lang.reflect.Field;
    public class Man {
    private int age; private String name; Man(String name, int age) {
    this.age = age;
    this.name = name;
    } public int getAge() {
    return age;
    } public String getName() {
    return name;
    } public void setAge(int age) {
    this.age = age;
    } public void setName(String name) {
    this.name = name;
    } public static void main(String[] args) throws Exception {
    Man m = new Man("James", 20);
    Class clazz = m.getClass();
    Field[] f = clazz.getDeclaredFields();
    String[] name = field2Name(f);
    Object[] value = field2Value(f, m);
    showNameAndValue(name, value); } public static void showNameAndValue(String[] name, Object[] value) {
    for (int i = 0; i < name.length; i++) {
    System.out.println("--" + i + "--");
    System.out.println("name:" + name[i]);
    System.out.println("Value:" + value[i]);
    System.out.println("--  --");
    } } public static String[] field2Name(Field[] f) {
    String[] name = new String[f.length];
    for (int i = 0; i < f.length; i++) {
    name[i] = f[i].getName();
    }
    return name;
    } public static Object[] field2Value(Field[] f, Object o) throws Exception {
    Object[] value = new Object[f.length];
    for (int i = 0; i < f.length; i++) {
    value[i] = f[i].get(o);
    }
    return value;
    }}