import java.io.*;
// 用户类
class User implements Serializable {
private String username;
private String password;
private String email;
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
// Getters and setters
public String getUsername() {
return username;
}
public String getEmail() {
return email;
}
}
// 代理类
class UserProxy implements Serializable {
private String username;
private String email;
public UserProxy(User user) {
this.username = user.getUsername();
this.email = user.getEmail();
// 在此处可以进行敏感信息的加密操作
}
public User getUser() {
// 在此处可以进行敏感信息的解密操作
return new User(username, null, email);
}
}
public class SerializationExample {
public static void main(String[] args) throws IOException, ClassNotFoundException {
// 创建用户对象
User user = new User("john_doe", "password123", "john@example.com");
// 创建代理对象并进行序列化
UserProxy proxy = new UserProxy(user);
FileOutputStream fileOutputStream = new FileOutputStream("user.ser");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(proxy);
objectOutputStream.close();
fileOutputStream.close();
// 反序列化代理对象
FileInputStream fileInputStream = new FileInputStream("user.ser");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
UserProxy deserializedProxy = (UserProxy) objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
// 获取用户对象
User deserializedUser = deserializedProxy.getUser();
// 输出用户名和邮箱信息
System.out.println(deserializedUser.getUsername());
System.out.println(deserializedUser.getEmail());
}
}
在上述示例中,我们定义了一个User
类表示用户对象,并实现了Serializable
接口以支持序列化。UserProxy
类作为代理类,包含了非敏感的用户名和邮箱信息,并在getUser()
方法中负责解密或还原敏感信息。
通过创建UserProxy
对象并将其进行序列化和反序列化,我们可以保护敏感信息,只有在需要时才会进行解密或还原。输出结果将显示用户的用户名和邮箱信息。
请注意,在实际应用中,您可能需要更加复杂的加密和解密机制来保护敏感信息,并根据具体需求进行适当的修改和调整。