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)的属性名和属性值,请问大家能不能实现上述功能?若能,应该怎样做?
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)的属性名和属性值,请问大家能不能实现上述功能?若能,应该怎样做?
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;
}}