import java.lang.reflect.*; class MethodTest { String name = "Jay"; public void m1() { System.out.println("m1 is called"); } public void m2() { System.out.println("m2 is called"); } } public class CallMethodTest { public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException { args = new String[] { "m2" }; String methodName = args[0]; if (methodName != null) { Class<MethodTest> clazz = MethodTest.class; Method m; Field f; try { m = clazz.getDeclaredMethod(methodName); f = clazz.getDeclaredField("name"); MethodTest obj = clazz.newInstance(); if (m != null) { m.invoke(obj); } String name = (String) f.get(obj); System.out.println(name); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }