幾種類載入方式的區別

2021-08-29 17:24:41 字數 1038 閱讀 6339

虛擬機器載入類的途徑:

1、dog dog = new dog();

這個動作會導致常量池的解析,dog類被隱式裝載。

如果當前classloader無法找到dog,則丟擲noclassdeffounderror。

2、class clazz = class.forname(「dog」);

object dog =clazz.newinstance();

通過反射載入型別,並建立物件例項

如果無法找到dog,則丟擲classnotfoundexception。

3、class clazz = classloader.loadclass(「dog」);

object dog =clazz.newinstance();

通過反射載入型別,並建立物件例項

如果無法找到dog,則丟擲classnotfoundexception。

那麼,1和2和3究竟有什麼區別呢?分別用於什麼情況呢?

1和2使用的類載入器是相同的,都是當前類載入器。(即:this.getclass.getclassloader)。

3由使用者指定類載入器。

如果需要在當前類路徑以外尋找類,則只能採用第3種方式。第3種方式載入的類與當前類分屬不同的命名空間。

當前類載入器命名空間對其不可見。當然,如果被載入類的超類對於當前類命名空間可見的話,則可以進行強制轉型。

第1和第2種情況區別不大。如果,dog類在編譯時無法得到,則使用第2種方式。

另外,第1種和第2種都會導致類被初始化,即:執行類的靜態初始化語句,而第3種情況不會。

另外注意,第1種丟擲error,第2、3種丟擲exception,它們分屬於不同的異常/錯誤分支。

-----------------------------

物件例項化方式:

1、new dog();

2、clazz.newinstance();或者clazz.getconstructor(...).newinstance(...);

3、object.clone();//通過本地方法進行複製

4、反序列化

jquery幾種載入方式

1.function jquery 實際上是執行 para 匿名方法,只不過是傳遞了jquery物件,用來定義一些需要預先定義好的函式。這種寫法的最大好處是形成閉包。在 function jquery 在內部定義的函式和變數只能在此範圍內有效。形成是否函式函式 私有變數的概念。2.function ...

c 幾種型別轉換方式

1 初始化和賦值進行的轉換 1 float one 1 整型轉浮點型23 int guess 2.333 double轉int45 int debt 7.2e12 flot轉int 但是無法儲存過大資料 2 以 方式初始化時進行轉換 1 條件 不允許轉換最大範圍還大大的資料,比如float就不能轉換...

Unity資源載入的幾種方式

unity資源載入的幾種方式 instantiate 最簡單的一種方式,以例項化的方式動態生成乙個物體。assetsbundle 即將資源打成 asset bundle 放在伺服器或本地磁碟,然後使用www模組get 下來,然後從這個bundle中load某個object,unity官方推薦也是絕大...