티스토리 뷰

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)

 

 

 

 

 

반응형

'Java' 카테고리의 다른 글

[Java] Collection - Iterator  (0) 2021.02.10
[Java] 정규표현식 Pattern, Matcher  (0) 2021.02.10
[Java] URI 한글 인코딩 이슈  (0) 2021.02.10
[Java] Redirecting HTTP to HTTPS in Spring Boot  (0) 2021.02.10
[Java] Model 2 Web Architecture  (0) 2021.02.10
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함