Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Java/ReflectionForInnerClass

From ZeroWiki

구글에서 찾은 답변

innerclass 에서는 기본적으로 Inner Class 를 포함하고 있는 상위클래스의 레퍼런스가 생성자로 들어간다. 마치 C++ 에서 메소드들에 대해 this 가 기본 파라메터로 넘어가는 것과 같은 이치랄까.

import java.lang.reflect.Constructor;

public class InnerConstructorTest {
    public static void main(String[] args) {
        try {
            Class outerClass = Class.forName("Outer");
            Object outer = outerClass.newInstance();
            Class innerClass = Class.forName("Outer$Inner");
            Class[] consParamClasses = new Class[]{outerClass};
            Constructor innerCons =
                    innerClass.getDeclaredConstructor(consParamClasses);
            Object[] consParams = new Object[]{outer};
            Object inner = innerCons.newInstance(consParams);
            System.out.println(inner.toString());
        } catch (Exception e) {
            System.out.println("Exception: " + e.getMessage());
        }
    }
}

class Outer {
    int y = 3;

    class Inner {
        public String toString() {
            return "" + y;
        }
    }
}