classloader-父类加载器

package org.pomelo.classloader;


import java.net.URL;   
import java.net.URLClassLoader;  




/**
 * 每个class文件都会被他的加载器launcher下的appclassloader加载 
 * 先交给自己的父类加载,若加载不到再由自己加载 而最终的parent就是BootstrapClassLoader
 * @author pomleo
 *
 */
public class ClassLoaderTest {   
    private static int count = -1;   
    public static void testClassLoader(Object obj) {   
        if (count < 0 && obj == null) {   
           System.out.println("Input object is NULL");   
           return;   
       }   
        ClassLoader cl = null;   
        if (obj != null && !(obj instanceof ClassLoader)) {   
            cl = obj.getClass().getClassLoader();   
           
        } else if (obj != null) {   
        System.out.println("this is classloader");
            cl = (ClassLoader) obj;   
        }   
        count++;   
        String parent = "";   
        for (int i = 0; i < count; i++) {   
            parent += "Parent ";   
        }   
        if (cl != null) {   
            System.out.println(   
                parent + "ClassLoader name = " + cl.getClass().getName());   
            testClassLoader(cl.getParent());   
        } else {   
           System.out.println(   
                parent + "ClassLoader name = BootstrapClassLoader");   
           count = -1;   
        }   
   }   
    public static void main(String[] args) {   
//        URL[] urls = new URL[1];   
//        URLClassLoader urlLoader = new URLClassLoader(urls);   
//        ClassLoaderTest.testClassLoader(urlLoader);   
   
    ClassLoaderTest.testClassLoader(new ClassLoaderTest());
   
   }   
}    

你可能感兴趣的:(classloader-父类加载器)