美文网首页
Class.forName和ClassLoader.loadCl

Class.forName和ClassLoader.loadCl

作者: 国祥同学 | 来源:发表于2018-07-08 02:44 被阅读0次

    Class.forName(className)方法,其实调用的方法是Class.forName(className,true,classloader);注意看第2个boolean参数,它表示的意思,在loadClass后必须初始化。比较下我们前面准备jvm加载类的知识,我们可以清晰的看到在执行过此方法后,目标对象的 static块代码已经被执行,static参数也已经被初始化。

    再看ClassLoader.loadClass(className)方法,其实他调用的方法是ClassLoader.loadClass(className,false);还是注意看第2个 boolean参数,该参数表示目标对象被装载后不进行链接,这就意味这不会去执行该类静态块中间的内容。因此2者的区别就显而易见了。

    最后还有必要在此提一下new方法和newInstance方法的区别

    newInstance: 弱类型。低效率。只能调用无参构造。

    new: 强类型。相对高效。能调用任何public构造。

    相关文章

      网友评论

          本文标题:Class.forName和ClassLoader.loadCl

          本文链接:https://www.haomeiwen.com/subject/mevnuftx.html