1. 程式人生 > >Gson 原始碼分析 總結

Gson 原始碼分析 總結

       Java泛型的實現機制,使用了泛型的程式碼在執行期間相關的泛型引數的型別會被擦除,我們無法在執行期間獲知泛型引數的具體型別(所有的泛型型別在執行時都是Object型別)。但是編譯java原始碼生成的Class檔案中還是儲存了泛型相關的資訊,這些資訊被儲存在class位元組碼常量池中,使用了泛型的程式碼處會生成一個signature簽名欄位,該簽名signature欄位指明瞭這個常量池的地址,於是可從該常量池中獲取到具體的型別。比如Class類的getGenericSuperClass()方法,對於帶有泛型的class,返回一個ParameterizedType物件,對於Object、介面和原始型別返回null,對於陣列class則是返回Object.class。ParameterizedType是表示帶有泛型引數的型別的Java型別,JDK1.5引入了泛型之後,Java中所有的Class都實現了Type介面,ParameterizedType則是繼承了Type介面,所有包含泛型的Class類都會實現這個介面。