1:序列化只儲存 1)物件的型別, 2)物件屬性的型別,3)物件屬性的值
方法是不帶狀態的,就是一些指令,指令是不需要序列化的,只要你的JVM classloader可以load到這個類,那麼類方法指令自然就可以獲得。序列化真正需要儲存的只是物件屬性的值,和物件的型別。
2:在什麼場景下使用序列化
把一個Java物件變成位元組流的形式傳出去,有的時候我們想要從一個位元組流中恢復一個Java物件。例如,有的時候我們想要把一個Java物件寫入到硬碟或者傳輸到網路上面的其它計算機,這時我們就需要自己去透過java把相應的物件寫成轉換成位元組流
4:transient關鍵字 修飾屬性 告訴java 此屬性不需要序列化
補充:為什麼使用Serializable定義資料型別或者接受陣列?
應用了java的多型性,目的是為了靈活的傳入引數,可以接受很多型別資料,如:String,integer,long等型別。他們均實現了Serializable,所以均可以接受,通俗的講只要你實現了Serializable型別就可以傳遞。
為什麼這麼做呢?
其實就是為了減少程式碼,提高程式碼利用率。就比如:你不用Serializable,你使用String型別資料,就必須拿String型別接受,你使用Integer資料,也就必須拿Integer接受。
為什麼不使用泛型呢?
那也有人說這不相當泛型嗎?那為啥不用泛型呢?如果用泛型那麼父類必須要實現並傳遞泛型,沒有這樣簡便輕巧。在這裡使用泛型太過繁瑣。
最新評論