zoukankan      html  css  js  c++  java
  • java中Class.forName("xxx")和ClassLoader().loadClass("xxx")的区别

    一、首先,查看Class类中的forName方法,可以发现有如下三个方法,但是我们通常用的是只有一个参数的方法。

      

      简单介绍一下这三个方法:

        1.第一个方法Class.forName("xxx")等同于第二个方法Class.forName("xxx",true,this.getClass().getClassLoader()),第二个布尔类型的参数表示装载该类的时候,是否初始化该类,即是否调用类中的static静态块函数及初始化静态成员变量;

         2.第三个方法forName0是一个native方法,也就是第二个方法内部调用的。

    二、查看ClassLoader().loadClass()方法,可以从下面源码看出,并没有指定是否初始化类的参数,只有通过clazz.newInstance()才能够初始化类。

      

      因此,可以说与Class.forName("xxx", false, ,this.getClass().getClassLoader())原理是基本相同的。

  • 相关阅读:
    隔离级别
    分析Hello2代码
    正则表达式
    Filter and servlet
    部署描述符
    Annotation
    LDAP and Implementation
    Restful levels and Hateoas
    servlet injection analysis
    隔离级别
  • 原文地址:https://www.cnblogs.com/handsomeye/p/6228551.html
Copyright © 2011-2022 走看看