[컴][자바] field 를 key/value 의 Hash Map 으로 만들기



Class fields 를 HashMap 으로 바꾸기

개인적으로 java 의 reflection 은 뭔가 code 의 가독성이 떨어지는 느낌이여서 잘 사용하지 않는다. 그런데 script 언어를 자주 사용하다보니, 쓰는것이 괜히 쓰게 된다.

여하튼 그래서 여기서는 class 의 field 값을 HashMap 으로 변환하는 방법을 알아보도록 하자.


getFields

ref.1 에 보면 field 를 가져와서 그것을 HashMap 으로 만드는 code 를 확인할 수 있다.
ref.1 의 code 에 보면

  • getFields() 

를 사용한다. 이를 사용하면, public 으로 정의된 녀석들을 가져온다. 그리고 만약 entity 가 상속된 class(extended class) 라면 super class 의 field 도 같이 가져다 준다.


getDeclaredFields

getDeclaredFields() 를 이용하면 상속된 class 에 정의된 field 만 가져올 수 있다. 그런데 문제는 이녀석의 값을 가져올 때는 private 이라서 아래 코드처럼 f.get() 으로 가져올 수 없다. 이 때는 해당되는 getter method 를 호출해야 할 것이다. ref. 1 의 code 를 참고하자.


Field[] fields = entity.getClass().getDeclaredFields();
Map<String, Object> map = new HashMap<String, Object>();
for(Field f : fields)
    map.put(f.getName(), f.get(entity));



source





Reference

  1. java reflection to create field/value hashmap - Stack Overflow




댓글 없음:

댓글 쓰기