21
Feb

Invoke Inner class method via Java Reflection

Invoke Inner class method via Java Reflection
==============================================


package practice;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class OuterClass {
	class InnerClass {
		public void myFunction() {
			System.out.println("Hello from inner class method");
		}
	}

	public static void main(String[] args) {
		try {
			OuterClass oc = new OuterClass();
			
			Class<?> ic = Class.forName("practice.OuterClass$InnerClass");
			Constructor<?> icc = ic.getDeclaredConstructor(OuterClass.class);
			
			Object o = icc.newInstance(oc);
			
			Method m = o.getClass().getDeclaredMethod("myFunction", null);
			m.invoke(o, null);
			
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
}



output:
Hello from inner class method