Guest User

Untitled

a guest
Feb 17th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.83 KB | None | 0 0
  1. package priv.mm.io;
  2.  
  3. import java.io.*;
  4.  
  5. /**
  6. * ObjectStreamDemo
  7. * <p>
  8. * 在序列化和反序列化过程中需要特殊处理的类,可以实现这些指定签名的特殊方法:
  9. * <br>
  10. * <pre>
  11. * private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException;
  12. * private void writeObject(java.io.ObjectOutputStream stream) throws IOException;
  13. * private void readObjectNoData() throws ObjectStreamException;
  14. * </pre>
  15. * </p>
  16. *
  17. * @author maodh
  18. * @since 04/02/2018
  19. */
  20. public class ObjectStreamDemo {
  21.  
  22. private static class User implements Serializable {
  23. private static final long serialVersionUID = 2196964377342851692L;
  24. private String username;
  25. private String password;
  26.  
  27. public User() {
  28. }
  29.  
  30. public User(String username, String password) {
  31. this.username = username;
  32. this.password = password;
  33. }
  34.  
  35. private void writeObject(ObjectOutputStream out) throws IOException {
  36. System.out.println("原始密码:" + password);
  37. final String putPassword = new StringBuffer(password).reverse().toString();
  38. System.out.println("加密密码:" + putPassword);
  39.  
  40. ObjectOutputStream.PutField putFields = out.putFields();
  41. putFields.put("username", username);
  42. putFields.put("password", putPassword);
  43. out.writeFields();
  44. }
  45.  
  46. private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
  47. ObjectInputStream.GetField readFields = in.readFields();
  48. final String readUsername = (String) readFields.get("username", "");
  49. final String readPassword = (String) readFields.get("password", "");
  50.  
  51. this.username = readUsername;
  52. System.out.println("解密密码:" + readPassword);
  53. this.password = new StringBuffer(readPassword).reverse().toString();
  54. System.out.println("原始密码:" + password);
  55. }
  56.  
  57. @Override
  58. public String toString() {
  59. return "User{" +
  60. "username='" + username + '\'' +
  61. ", password='" + password + '\'' +
  62. '}';
  63. }
  64.  
  65. @Override
  66. public boolean equals(Object o) {
  67. if (this == o) return true;
  68. if (o == null || getClass() != o.getClass()) return false;
  69.  
  70. User user = (User) o;
  71.  
  72. if (!username.equals(user.username)) return false;
  73. return password.equals(user.password);
  74. }
  75.  
  76. @Override
  77. public int hashCode() {
  78. int result = username.hashCode();
  79. result = 31 * result + password.hashCode();
  80. return result;
  81. }
  82. }
  83.  
  84. private static byte[] writeObject(User user) {
  85. try (ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
  86. ObjectOutputStream objectOut = new ObjectOutputStream(byteArrayOut)) {
  87. objectOut.writeObject(user);
  88. return byteArrayOut.toByteArray();
  89. } catch (IOException e) {
  90. e.printStackTrace();
  91. }
  92. return new byte[0];
  93. }
  94.  
  95. private static User readObject(byte[] bytes) {
  96. try (ByteArrayInputStream byteArrayInput = new ByteArrayInputStream(bytes);
  97. ObjectInputStream objectInput = new ObjectInputStream(byteArrayInput)) {
  98. return (User) objectInput.readObject();
  99. } catch (IOException | ClassNotFoundException e) {
  100. e.printStackTrace();
  101. }
  102. return new User();
  103. }
  104.  
  105. public static void main(String[] args) {
  106. final User user = new User("maomao", "123456");
  107. final byte[] bytes = writeObject(user);
  108. System.out.println("====== 序列化 && 反序列化 ======");
  109. final User user2 = readObject(bytes);
  110. System.out.println(user.equals(user2));
  111. }
  112. }
Add Comment
Please, Sign In to add comment