import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
class A {
private String p;
private String q;
A() {
p = "foo";
q = "bar";
}
public String getP() {
return p;
}
public String getQ() {
return q;
}
public Map<String, Object> toMap() {
Field[] fields = this.getClass().getDeclaredFields();
Map<String, Object> ret = new HashMap<String, Object>();
for ( int i = 0; i < fields.length; ++i ) {
try {
ret.put(fields[i].getName(), fields[i].get(this));
} catch (IllegalArgumentException e) {
e.printStackTrace();
return null;
} catch (IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
return ret;
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
A a = new A();
Map<String, Object> r = a.toMap();
for ( String s : r.keySet() ) {
Object o = r.get(s);
System.out.println("key:" + s + ", value:" + o.toString());
}
}
}
소중한 의견, 감사합니다. ^^
는 뭐 그저 그럴지 모르지만 귀찮은 작업이 줄어들 때가 있습니다. 가령 어떤 객체의 모든 필드와 그 값의 쌍을 Map 객체 안에 저장하고 싶다거나 할때 특히 유용하죠. (그 역방향 작업이 필요할 때도 있겠죠.)
2010.09.29 14:19 [ ADDR : EDIT/ DEL : REPLY ]Reflection을 사용하면 속도상의 손해를 많이 보나요?
2011.10.05 13:58 [ ADDR : EDIT/ DEL : REPLY ]