RT
14章裡寫到:“所有的類都是在其第一次使用時,動態加載到JVM中的…………因此,JAVA程序在它開始運行之前並未完全被加載,其各個部分是在必需時才加載的”
這句話是單單對於反射而言,還是對於所有實例化類的方式而言呢?
也就是說對於所有的實例化類的方式而言,JAVA的類加載都是在運行時由JVM完成的而不是編譯時完成的嗎?
類加載當然是運行時完成,編譯時只是檢查你的語法,並生成 class 文件。
類加載不僅僅是在有實例化的時候,類靜態變量被使用,類靜態方法被調用...總之就是在程序運行的時候,必需得用到某個類時,才會由類加載器將其加載到 jvm 的 PermGen 區。
因為是運行時的反射,所以程序員很容易有考慮不到的地方,掉進類加載的陷阱,致使類加載時出現故障導致程序執行失敗,即使是 JSR 的倡導者 Nokia 也不例外:http://blog.csdn.net/defonds/article/details/4889012http://blog.csdn.net/defonds/article/details/4889012