經典面試題-Class.forName()的作用

  • 1、裝載一個類並且對其進行實例化的操作。
  • 2、裝載過程中使用到的類加載器是當前類。

爲了詳細描述,Class.forName()方法,這裏使用classLoader.loadClass()進行對比描述

  • a)Class.forName(String className)使用裝載當前類的類裝載器來裝載制定的類,因爲class.forName(String name)方法內部調用了Class.forName(className,true,this.getClass().getClassLoader())方法。
  • b)classLoader.loadClass(StringclassName,boolean resolve);需要手動制定裝載器的實例。
  • c)Class.forName(className)裝載的class已經被實例化,classLoader.loadClass().則只是將信息裝載給JVM。
  • d)在JDBC中Class.forName(“com.mysql.jdbc.Driver”),如果換成getClass().getClassLoader().loadClass(“com.mysql.jdbc.Driver”),就不可以,因爲它只是想JVM裝載了Driver的類信息,但是沒有實例化,也就不能執行相應的操作,因爲Driver是需要被初始化才能被使用的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章