import java.lang.reflect.Constructor; public class Outer { public static void main(String[] args) throws Exception { new Outer().createViaReflection(); } public Inner createViaReflection() throws Exception { Constructor ctor = Inner.class.getDeclaredConstructor(new Class[]{Outer.class}); return ctor.newInstance(new Object[]{this}); } class Inner{{System.out.println("made it");}} }