java的方法什么时候加载,java – JVM什么时候加载类?
只有當您需要有關該類的信息時,才會加載類。
public class SomethingCaller {
public static Something something = null; // (1) does not cause class loading
public static Class> somethingClass = Something.class; // (2) causes class loading
public void doSomething() {
new Something(); // (3) causes class loading
}
}
線(2)& (3)將導致類被加載。 Something.class對象包含信息(行(2)),它只能來自類定義,因此需要加載類。對構造函數(3)的調用顯然需要類定義。類似于類上的任何其他方法。
但是,行(1)不會導致類被加載,因為您實際上不需要任何信息,它只是對對象的引用。
編輯:在你改變的問題,你詢問是否引用Something.class加載類。是的,它確實。它不會加載類,直到執行main()。使用以下代碼:
public class SomethingTest {
public static void main(String[] args) {
new SomethingCaller();
}
}
public class SomethingCaller {
public void doSomething() {
Class> somethingClass = Something.class;
}
}
public class Something {}
此代碼不會導致加載Something.class。但是,如果我調用doSomething(),則加載該類。要測試這個,創建上述類,編譯它們并刪除Something.class文件。上述代碼不會與ClassNotFoundException崩潰。
總結
以上是生活随笔為你收集整理的java的方法什么时候加载,java – JVM什么时候加载类?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java配置文件中的plugin,启用C
- 下一篇: matlab中的图像,MATLAB中图像