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());
}
}
}
'Languages > Java' 카테고리의 다른 글
| SNMP4J: null respone를 처리하지 못하는 문제 (0) | 2011/07/12 |
|---|---|
| Android SDK: Java SE Development Kit (JDK) not found (30) | 2011/03/14 |
| 간단한 Java Reflection 사용 사례 (3) | 2010/09/02 |
| Java와 Windows (4) | 2010/01/29 |
| Subversion + Maven 2 + Hudson + Ubuntu (2) | 2008/11/12 |
| SVN에 등록된 Maven 프로젝트를 checkout 받아 빌드하기 (0) | 2008/07/16 |
댓글을 달아 주세요
는 뭐 그저 그럴지 모르지만 귀찮은 작업이 줄어들 때가 있습니다. 가령 어떤 객체의 모든 필드와 그 값의 쌍을 Map 객체 안에 저장하고 싶다거나 할때 특히 유용하죠. (그 역방향 작업이 필요할 때도 있겠죠.)
2010/09/29 14:19 [ ADDR : EDIT/ DEL : REPLY ]Reflection을 사용하면 속도상의 손해를 많이 보나요?
2011/10/05 13:58 [ ADDR : EDIT/ DEL : REPLY ]테스트는 안해봤는데 속도 저하를 피할수는 없을 것 같습니다. 실무에 적용하기 전에는 반드시 어느 정도의 성능 저하가 있는지 실험을 해 보신 다음에 적용하시기를.
2011/10/05 14:05 [ ADDR : EDIT/ DEL ]