1.继承抽象类ClassLoader.
2.复写findClass()方法
3.ClassLoader类中的loadClass()方法和findClass()方法的区别
loadClass()需要传入一个字符串形式的类名参数,方法内部就会加载传入的类,并返回一个Class类型。我们自定义类加载器的时候不用复写这个方法,其方法内实现是去到父类类加载器中,如果在父类类加载器中没有找到该类,会返回到自身去调用findClass()方法继续寻找,如果都没有找到,抛出ClassNotFoundException。即loadClass()方法首先到父类类加载器中寻找,没有再通过自身的findClass()方法寻找。所以我们复写findClass()方法即可。
这里体现出模版方法设计模式。
通过loadClass()方法和findClass()方法我们得到了Class类的二进制数据,接下来我们可以调用defineClass(String name,Resource res)方法把Class文件的内容转换成字节码文件。