zoukankan      html  css  js  c++  java
  • JDBC连接中Class.forName("")到底干了什么?

    思考了一个问题,Class.forName("***");到底干了什么?

    我们知道Class.forName( )静态方法的目的是为了动态加载类,但是一般来说,一个类forName只是要求JVM查找并加载指定的类,最终的目的是要newInstance()去把它实例化对象的,但是这里并没有,那它的作用是什么?

    其实在JVM加载指定类的过程中,如果类中有静态初始化内容的话,JVM就会执行该部分代码,于此同时JDBC规范要求任何一个driver类必须向DriverManger类去注册自己,也就是说此例中加载的com.mysql.jdbcDriver中一定是有一段代码类似

    static {
    try {
    DriverManager.registerDriver(new ***Driver());
    } catch (SQLException e) {
    System.out.println(e.toString());
    }
    }
    

      


    所以在这里只需要forName就行了并不需要newInstance,因为我们真正需要的其实就是上述向DriverManager注册自己的过程。破案。
    ---------------------
    作者:撸蛇
    来源:CSDN
    原文:https://blog.csdn.net/weixin_40887477/article/details/81745976
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Linux cat
    Linux touch
    Win10 UAP 绑定
    Win10 资源文件
    Win10 启动模拟器
    Win10 安装Vs2015 社区版和企业版各个问题汇总
    Win10 开发者模式开启
    android 入门-本地化语言
    android 入门-基础了解
    wp8 入门到精通 定时更新瓷贴
  • 原文地址:https://www.cnblogs.com/a1304908180/p/10503871.html
Copyright © 2011-2022 走看看