Java
[Java] Object의 Field 값 얻는 방법
Jane Kwon
2021. 2. 10. 14:37
반응형
backoffice api 에서 data-dam-api 로 request param 으로 값을 넘기기 위해
request model을 파라미터로 만들어주는 공통 모듈 제작
public static String convertParameter(Object obj) throws IllegalAccessException {
StringBuffer parameter = new StringBuffer();
for (Field field : obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
Object value = field.get(obj);
if (!ObjectUtils.isEmpty(value)) {
parameter.append(field.getName())
.append("=")
.append(value)
.append("&");
}
}
parameter.delete(parameter.length()-1, parameter.length());
log.debug(parameter.toString());
return parameter.toString();
}
Field Class
- getDeclaredFields 메소드
- Java Reflection 을 사용하면 특정 인스턴스의 멤버 변수, 메소드 등에 접근 가능
- 멤버 변수에 접근할 수 있는 방법으로 getFields 메소드를 사용하는데, 이는 public 멤버 변수에만 접근이 가능
- private 을 포함한 모든 멤버 변수에 접근하기 위해선 getDeclaredFields 메소드 사용
- setAccessible 메소드
- getDeclaredFields 메소드를 통해 멤버 변수 정보에는 접근이 가능하지만, 멤버 변수의 값에는 접근이 불가능
- private 멤버 변수 값을 read/write 하기 위해선 setAccessible 메소드를 통해 해당 필드 값에 접근을 허용해주는 설정 필요
- 해당 setting 없이 private 멤버 변수의 값에 접근하게 되면 IllegalAccessException 예외가 발생
(참고 : junhyunny.blogspot.com/2019/03/field-getdeclaredfields-setaccessible.html)
반응형