selfstarter

Java Reflection으로 class 정보 가져오기 본문

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();        
}
Comments