2010년 12월 14일 화요일

Reflection을 이용하여 Inner Class Object 생성하기

예제로 아래의 Parent Class를 이용한다.

public class Parent {
    public class Inner {
        public Inner() {
            System.out.println("Inner constructed");
        }
    }
} 
 
Reflection을 이용하여 Inner Class를 Object로 만들기 위해서는 일반적인 과정보다
한단계의 절차가 더 필요하다. 먼저 방법을 보면 다음과 같다.

Object parent = Class.forName("Parent").newInstance();
Object innerObject = null;
for (Class each : parent.getClass().getDeclaredClasses()) {
    if (each.getSimpleName().equals("")) {
        Constructor construct
           = each.getDeclaredConstructor(new Class[] { parent.getClass() });
        innerObject = construct.newInstance(new Object[] { parent });
    }
}

핵심적인 사항은 다음과 같다.

1. Contruct를 이용하여 Object를 생성해야 한다
2. Construct 조회시 Parent Class를 파라미터로 제공해야 한다.
3. 객체 생성시 Parent Object를 파라미터로 제공해야 한다.

아주 제한된 상황에서 사용되기는 하지만 이런 방법을 통해서 해결된다.

Powered by 쓰리래빗츠

댓글 없음:

댓글 쓰기