做下源码注释的搬运工。
ClassLoader loader = new NetworkClassLoader(host, port);
* Object main = loader.loadClass("Main", true).newInstance();
* <blockquote><pre>
* class NetworkClassLoader extends ClassLoader {
* String host;
* int port;
*
* public Class findClass(String name) {
* byte[] b = loadClassData(name);
* return defineClass(name, b, 0, b.length);
* }
*
* private byte[] loadClassData(String name) {
* // load the class data from the connection
* . . .
* }
* }
* </pre></blockquote>
总结下就是李罡说的对,这里需要理解的是loadClass返回一个是java.lang.class的实例,findClass里获得二进制字节数组,并调用defineClass方法生成java.lang.class的实例。 |