Virtual Method Invoke를 이용하면 무엇을 실행하게 될지 알수 없는 동적 바인딩인 메서드를 실행할수 있다.
이를 통해 웹서비스에서 많이 볼수 있는 플러그인이라던가, 위젯을 손쉽게 구현할 수 있다.
[code]import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class DynamicClassLoader {
  public Object execute(Class clazz, String runner, Object… args)
  throws ClassNotFoundException, SecurityException,
  InstantiationException, IllegalAccessException {
Method[] methods = clazz.getMethods();
    try {
      for (Method method : methods) {
        if (method.getName().equals(runner)) {
          return method.invoke(this, args);
        }
      }
    } catch (IllegalArgumentException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    } catch (InvocationTargetException e) {
      e.printStackTrace();
    }
    return null;
  }
}[/code]
첫번째 인자로 읽어들일 클래스를 넣어주고, 두번째 인자로 수행할 메서드명을 입력한다.
그 이후에는 인자값들을 넣어주면 된다. 가변인자를 사용한다.
가변인자와 발전된 for문 형식때문에 위의 소스는 JDK 5이상에서만 작동한다.
invoke를 통해서 마치 자신이 해당 클래스에서 호출한 메서드인것처럼 작동하게 된다.