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())原理是基本相同的。

  • 相关阅读:
    UVALive 7276 Wooden Signs
    hdu4291 A Short problem
    A
    hdu4686 Arc of Dream
    thinkphp5 模型的 更新操作
    thinkphp5 模型的 新增操作
    thinkphp 模型的创建
    thinkphp5 增删改查操作
    tp5 的查询构造器
    thinkphp5 数据库的原生查询
  • 原文地址:https://www.cnblogs.com/handsomeye/p/6228551.html
Copyright © 2011-2022 走看看