jvm類加載機制

一 、類的加載
類的加載由類加載器完成,類加載器通常由JVM提供,這些類加載器也是程序運行的基礎,JVM提供的類加載器通常被稱爲系統類加載器。除此之外,開發者可以通過繼承ClassLoader基礎來創建自己的類加載器。

  • 從本地文件系統加載class文件
  • 從jar包加載class文件,(jdbc,引入其它的jar包)
  • 通過網絡加載class文件
  • 對java源文件動態編譯, 並執行加載

二、類的連接
當類被加載之後,系統爲之生成一個對應的Class對象,接着將會

三、獲取Class對象

  • 使用Class類的forName(String clazzName)靜態方法。例如,Person.class將會返回Person類對應的Class對象。
  • 調用某個類的class屬性來獲取該類對應的Class對象。例如,Person.class將會返回Person類對應的Class對象。
  • 調用某個能夠的getClass()方法。該方法是java.lang.Object類中的一個方法,所以所有的JAVA對象都可以調用該方法,該方法將會返回該對象所屬類對應的Class對象。

對於第一種方式和第二種方式都是直接根據類來取得該類的Class對象,相比之下,第二種方式有如下兩種優勢。

  • 代碼更安全。程序在編譯階段就可以檢查需要訪問的Class對象是否存在。
  • 程序性能更好。因爲這種方式無須調用方法,所以性能更好。
    也就是說,能使用第二種方式,就不使用第一種方法。
    四、從Class中獲取信息
    獲取Classc對應類所包含的構造器
序號 方法 說明
1 Constructor<T> getConstructor(Class<?>… parameterTypes) 獲取指定public的構造器
2 Constructor[]<T> getConstructors() 獲取全部public的構造器
3 Constructor<T> getDeclaredConstructor(Class<?>… parameterTypes) 獲取指定的構造器
4 Constructor[]<T> getDeclaredConstructors() 獲取全部的構造器

獲取Classc對應類所包含的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章