1. 程式人生 > >Java關於類載入器的簡單學習

Java關於類載入器的簡單學習

首先,類載入器本身也是一個類,類名就叫ClassLoader.

類載入器一共有三個子類,都屬於負責載入類的物件。

1. AppClassLoader  : 應用類載入器,作用是載入使用者自定義類

2.ExtClassLoader  : 擴充套件類載入器,作用是載入類庫中的一些展類

3.BootStrapLoader : 引導類載入器,作用是載入 jdk提供的類.

下面還是要看一下程式碼:

package cn.itcast_類載入器;

public class Demo {
	
	public static void main(String[] args) {
		
		String s = "abc";
		
		ClassLoader c1 = Demo.class.getClassLoader();
		System.out.println(c1);//AppClassLoader
		
		System.out.println(c1.getParent());//ExtClassLoader
		System.out.println(c1.getParent().getParent());//BootStrapLoaderLoader
		
		System.out.println(String.class.getClassLoader());//BootStrapLoader
		
	}

}

上面程式碼的執行結果為:

此圖包含了程式碼中四條輸出語句的結果,第一、二行分別是AppClassLoader和ExtClassLoader的名字(雖然看起來像地址,但它們確實是名字),第三行和第四行輸出為null,也就是說BootStrapLoader是無法獲取的,因為BootStrapLoader這個類不是用Java語言編寫的,而是用C/C++編寫來的,所以BootStrapLoader的值為null,並不代表沒有這個值,而是無法獲取到這個值。因為String型別的類載入器是在JDK中的,所以獲取的類載入器也為BootStrapLoader.

熟悉類載入器之前要了解一下反射機制,大家可以參考一下我之前寫的《對Java中反射機制的理解》。