【翻译】Serialization / Marshalling / Deflating in JAVA

原文地址: http://www.dzone.com/links/r/serialization_marshalling_deflating_in_java.html

Writing Java Objects or keeping the state of Objects into DataBase or Files (In Binary Format) is known as Serialization or Marshalling or deflating.
Reading Java Objects back in Binary Format from file or Database is known as DeSerialization or UnMarshalling or inflating.

[img]http://shivasoft.in/blog/wp-content/uploads/2011/03/Serialization-Marshalling-deflating-DeSerialization-UnMarshalling-inflating.jpg[/img]

Transient : If any variable is defined by using keyword “transient”, then object will not serialize that variable. During deserialization default value of that datatype will be set.
Static : as static variables are class level variables, so it is not serialzed as the object state.

Example:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

package com.G2.Serialization;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class Home implements Serializable
{
transient int flatNo;
String OwnerName;
}

class Door extends Home
{
private boolean isDoubleLock;
private String DoorMaterial;
public void setValue(boolean isDLock,String dMaterial, int fNo,String Owner)
{
isDoubleLock = isDLock;
DoorMaterial = dMaterial;
flatNo = fNo;
OwnerName = Owner;
}
public void Display()
{
System.out.println("Double Lock - "+isDoubleLock);
System.out.println("Material - "+DoorMaterial);
System.out.println("flat No - "+flatNo);
System.out.println("Owner Name - "+OwnerName);
}
}

public class SerializationDemo {
public static void main(String[] args) throws FileNotFoundException, IOException,
ClassNotFoundException {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Demo.srl"));

Door d = new Door();
d.setValue(true, "Wood", 24, "Minal Zaa");
System.out.println(" *** Serializing Object *** ");
out.writeObject(d);

out.close();

ObjectInputStream in = new ObjectInputStream(new FileInputStream("Demo.srl"));
System.out.println(" *** DeSerializing Object *** ");
Door d1 = (Door) in.readObject();
d1.Display();

in.close();

}
}


Output:

*** Serializing Object ***

*** DeSerializing Object ***
Double Lock – true
Material – Wood
flat No – 0
Owner Name – Minal Zaa

Note from example:
Parent class implements interface “Serializable” and child class extends that, so child class automatically gets serialized.
Variable “flatNo” is transient and therefore it is not serialized.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值