国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中Serializable與serialVersionUID

2019-11-06 08:22:32
字體:
來源:轉載
供稿:網友

轉載請保留出處: http://blog.csdn.net/xiaxl/article/details/60114057

Serializable用法serialVersionUID的作用

Android中,使用Serializable方式將對象序列化到數據庫代碼舉例

一、Serializable用法

Serializable用于實現java對象序列化和反序列化。 序列化可以將一個java對象以二進制流的方式持久化到數據庫文件中; 反序列化則是可以把之前持久化在數據庫或文件中的二進制數據,以流的方式讀取出來重新構造成一個和之前相同內容的java對象。

代碼舉例說明

public class SnsBiLogData implements Serializable { PRivate static final long serialVersionUID = 1L; public String time; public String event; //string 事件名 public String ip;//string 訪問ip地址 public String network;//string wifi、3G等 public String app_version;//string app版本 public String Operator;//string 運營商}// 序列化工具類public class SerializeUtil { /** * 序列化對象 * * @throws IOException */ public static byte[] serializeObject(Object object) { ByteArrayOutputStream saos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(saos); oos.writeObject(object); oos.flush(); return saos.toByteArray(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 反序列化對象 * * @throws IOException * @throws ClassNotFoundException */ public static Object deserializeObject(byte[] buf) { ByteArrayInputStream sais = new ByteArrayInputStream(buf); try { ObjectInputStream ois = new ObjectInputStream(sais); return ois.readObject(); } catch (Exception e) { e.printStackTrace(); } return null; }}

二、serialVersionUID的作用

serialVersionUID有兩種寫法:

一種是private static final long serialVersionUID = 1L; 一種根據類名、接口名、成員方法及屬性等來生成一個64位的哈希字段。比如:private static final long serialVersionUID = -8940196742313994740L;

源碼注釋中這樣寫到:

By default, this identifier is computed by hashing the class declaration and its members. This identifier is included in the serialized form so that version conflicts can be detected during deserialization. If the local {@code serialVersionUID} differs from the {@code serialVersionUID} in the serialized data, deserialization will fail with an {@link InvalidClassException} 默認情況下,serialVersionUID是根據類名、接口名、成員方法及屬性等來生成一個64位的哈希字段。對象在反序列化時,serialVersionUID值不同,會拋出InvalidClassException異常,造成反序列化失敗。 這里寫圖片描述

因此,無論serialVersionUID采用的哪一種寫法,只要其在對象序列化與反序列化過程中保持不變即可。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永和县| 怀仁县| 伊金霍洛旗| 石景山区| 无极县| 庆元县| 海安县| 广汉市| 宜兰县| 泰宁县| 晋宁县| 延庆县| 大埔区| 银川市| 城固县| 渝北区| 白河县| 泰宁县| 个旧市| 唐山市| 嘉善县| 陈巴尔虎旗| 台安县| 墨竹工卡县| 湖南省| 虞城县| 安平县| 镇雄县| 通化县| 广德县| 新化县| 简阳市| 靖西县| 石渠县| 禹城市| 邢台县| 东阳市| 清远市| 永平县| 彭水| 永靖县|