在分布式應用中,對象只有經過序列化才能在各個分布式組件之間傳輸,這就涉及到兩個方面的技術-發送者將對象序列化,接受者將對象反序列化,下面就是一個很好的例子!
1.實體-Employee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import java.io.Serializable; public class Employee implements Serializable{ /** * */ private static final long serialVersionUID = 1L; public String getName() { return name; } public void setName(String name) { this .name = name; } public int getAge() { return age; } public void setAge( int age) { this .age = age; } private String name; private int age; } |
2.SerializeHelper
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
|
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class SerializeHelper { public byte [] Serialize(Object object) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); try { ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); //將對象寫入到字節數組中進行序列化 objectOutputStream.writeObject(object); return byteArrayOutputStream.toByteArray(); } catch (IOException e) { e.printStackTrace(); } return null ; } public Object deSerialize( byte [] bytes) { //將二進制數組導入字節數據流中 ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); try { //將字節數組流轉化為對象 ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); return objectInputStream.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return null ; } } |
3.測試類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class Hello { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SerializeHelper serializeHelper = new SerializeHelper(); Employee employee = new Employee(); employee.setName( "admin" ); employee.setAge( 20 ); byte [] serializObject = serializeHelper.Serialize(employee); System.out.println(serializObject); Employee e = (Employee)serializeHelper.deSerialize(serializObject); System.out.println( "Name: " + e.getName()+ ",Age: " + e.getAge()); } } |
4.輸出
1
2
|
[B @e05d173 Name: admin,Age: 20 |
5.總結
序列化和反序列化還有其他的框架可以完成,比如Hession,有機會再研究!
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/afandaafandaafanda/article/details/49159141