U E D R , A S I H C RSS

Java/Reflection For Inner Class


innerclass μ—μ„œλŠ” 기본적으둜 Inner Class λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλŠ” μƒμœ„ν΄λž˜μŠ€μ˜ λ ˆνΌλŸ°μŠ€κ°€ μƒμ„±μžλ‘œ λ“€μ–΄κ°„λ‹€. 마치 C++ μ—μ„œ λ©”μ†Œλ“œλ“€μ— λŒ€ν•΄ this κ°€ κΈ°λ³Έ νŒŒλΌλ©”ν„°λ‘œ λ„˜μ–΄κ°€λŠ” 것과 같은 μ΄μΉ˜λž„κΉŒ.

~cpp 
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;
        }
    }
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:33
Processing time 0.0073 sec