Notice: 函数 WP_Scripts::localize 的调用方法不正确$l10n 参数必须是一个数组。若要将任意数据传递给脚本,请改用 wp_add_inline_script() 函数。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 5.7.0 版本添加的。) in /data/www/appblog/wp-includes/functions.php on line 6131

Java之双亲委托机制

双亲委派机制的工作流程:

(1)当前ClassLoader首先从自己已经加载的类中查询是否此类已经加载,如果已经加载则直接返回原来已经加载的类。每个类加载器都有自己的加载缓存,当一个类被加载了以后就会放入缓存,等下次加载的时候就可以直接返回了。

(2)当前ClassLoader的缓存中没有找到被加载的类的时候,委托父类加载器去加载,依次递归(即:父类加载器采用同样的策略,首先查看自己的缓存,然后委托父类的父类去加载,一直到Bootstrp ClassLoader),如果父类加载器可以完成类加载任务,就成功返回。

(3)当所有的父类加载器都没有加载的时候,再由当前的类加载器加载,并将其放入它自己的缓存中,以便下次有加载请求的时候直接返回。

代码示例:

protected Class<?> loadClass(String className, boolean resolve) throws  ClassNotFoundException { 
    //首先从已经加载的类中查找
    Class<?> clazz = findLoadedClass(className);    
    if (clazz == null) {
        ClassNotFoundException suppressed = null;     
        try {   
             //如果没有加载过,先调用父加载器的loadClass
             clazz = parent.loadClass(className, false);
        } catch (ClassNotFoundException e) {
             suppressed = e;
        }

        if (clazz == null) {        
           try {           
               //父加载器都没有加载,则尝试加载
               clazz = findClass(className);
           } catch (ClassNotFoundException e) {
                e.addSuppressed(suppressed);       
                throw e;
           }
        }
    }    

    return clazz;
}
上一篇 Java 8 Optional 类
下一篇 Spring Boot自定义Druid数据源