Please Enable JavaScript!
Gon[ Enable JavaScript ]

Class 분석하기위한 속성값들 뽑아오는 방법

자바(JAVA)
반응형

클래스의 속성값들을 가져와서 그 이름과 맵핑시키는 자동화구현을 위해 만든것이다.
클래스를 넘길때 getClass() 를 실행하면 클래스 객체가 넘어간다.

class.getDeclaredMethods(); // 모든 메서드를 반환한다.
class.getDeclaredConstructors();// 모든 생성자를 반환한다.
class.getSuperClass(); // 상속받은 클래스를 반환한다.


다음 예제함수는 필드를 리스트로 반환한것이다.

private List allFileds(Class claz){
   List fields = new ArrayList()

   Class parent = claz;
  
   do {
      fields.addAll(Arrays.asList(parent.getDeclaredFields()));
      parent = parent.getSuperclass(); // 상속받은 클래스가 뭔지알아볼려는것
   } whild (!parent.equals(Object.class))
   return fields;
}

위의 함수를 써서 반환받은 리스트를 Iterator 변환후 Field 객체에 넣고 각 값들을 하나씩
꺼내쓸수있다. Field::getName() 필드명이 올것이고 Field::getType() 필드 타입이 올것이다.

List arrFields = arrFields(createOrder.getClass());
for (Iterator iter = arrFields.iterator(); iter.hasNext();){
   Field field = (Fiels)iter.next();
   field.setAccessible(true);
   log.debug("Field name : "+ field.getName());
   log.debug("Field Type : "+ field.getType());
   field.setAccessible(false);
}

다른 함수 쓰임 예제이다.

Class cls = class.forName("클래스명")
Constructor[] cons = cls.getConsturctors(); // 생성자배열을 리턴한다.
Method[] method = cls.getMethod(); // 함수 배열을 리턴한다.
Field[] field = cls.getFields(); // 필드(멤버변수) 배열을 리턴한다.
반응형
Posted by 녹두장군
TAG

댓글을 달아 주세요