バイトコードからクラスを動的にロード

public class BytecodeClassLoader extends ClassLoader {
  public Object newInstance(String className, byte[] bytecode) {
    Object obj = null;

    try {
      defineClass(className, bytecode, 0, bytecode.length);
      obj = loadClass(className, true).newInstance();
    } catch (Exception e) {
      ...
    }

    return obj;
  }
}

ClassLoader クラスの protected メソッドである defineClass, loadClass メソッドを利用するため,ClassLoader クラスを継承したクラスを自作する.