Server/Java
Java Reflection으로 class 정보 가져오기
selfstarter
2020. 6. 5. 16:08
Java Reflection으로 class 정보 가져오기
Reflection은 객체의 정보를 알아내는 기능을 가진 class이다
field에 setAccessible()함수 인자를 true로 줘야 접근이 가능하다
getField와 getDeclaredFields, getMethod와 getDeclaredMethod함수의 차이는 해당 class에서 선언된 함수, 필드만 가져올 땐 Declared 붙은 함수를 사용하고, 상속받은 class의 정보도 표시하고 싶을 때는 Declared가 없는 함수를 호출한다
public static String getInfo(Object obj) {
StringBuilder builder = new StringBuilder();
builder.append("pakage name: ");
builder.append(obj.getClass().getPackageName());
builder.append("class name: ");
builder.append(obj.getClass().getSimpleName());
builder.append("\n=============== Field List ===============\n");
for (Field field : obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
try {
Object fieldValue = field.get(obj);
builder.append(field.getType());
builder.append(" ");
builder.append(field.getName().toString());
builder.append(" : ");
builder.append(fieldValue);
builder.append(" ");
} catch (Exception e) {
}
}
return builder.toString();
}