首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对系列化的深入理解

对系列化的深入理解
EN

Stack Overflow用户
提问于 2015-01-27 03:08:30
回答 1查看 103关注 0票数 1

我正在努力学习序列化,在哪里我无法理解以下概念。

我有一个名为Account的类,这个类需要序列化,Accounts类有两个变量用户名和密码。其中的密码不需要序列化。因此,我们添加关键字瞬态。

代码语言:javascript
运行
复制
public class CustomizedSerialization{
public static void main(String[] args) throws IOException{

Account acc= new Account();

System.out.println("Serialization Started");
FileOutputStream fos= new FileOutputStream("userDetail.txt");
ObjectOutputStream oos= new ObjectOutputStream(fos);
oos.writeObject(acc);
System.out.println("Serialization Ended");

}
}

class Account implements Serializable{
String username="myusername";
transient String password="mypassword"; 
}


Fine it runs as expected the output is 
Account UserName myusername
Account Password null

,麻烦从这里开始,。他们说,如果您想序列化密码,也可以在需要序列化的类中编写带有以下签名的回调方法。

现在,我将以下代码添加到我的帐户类中

代码语言:javascript
运行
复制
private void writeObject(ObjectOutputStream os) throws Exception{
    System.out.println("writeObject Callback");
    os.defaultWriteObject();
    os.writeObject(password);
}

private void readObject(ObjectInputStream ois) throws Exception{
    ois.defaultReadObject();
    System.out.println("ReadObject Callback");
    this.password=(String)ois.readObject();
}

酷它的工作完成了…。

代码语言:javascript
运行
复制
Account UserName myusernamedurga
Account Password mypassword

现在我的问题是,我们可以用一种非常简单的方式实现这一点,比如删除密码的瞬态关键字。我相信这背后是有原因的,有人能解释我吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-27 03:26:02

如果将类声明为Serializable,Java将序列化其所有字段。

您可以通过创建这些transient来选择性地关闭某些字段。

您可以通过实现writeObjectreadObject方法来放弃默认的序列化机制。如果这样做,您就可以完全自由地处理如何序列化对象。

最后,您可以混合和匹配:实现这两种方法,但Java仍然将“轻松字段”序列化。为此,您可以在自己的writeObject实现中调用writeObject。这将序列化所有对您来说不是短暂的字段,因此您只需担心其他字段。

现在我的问题是,我们可以用一种非常简单的方式实现这一点,比如删除密码的瞬态关键字。

是。如果声明Serializable所提供的默认序列化方式对您来说足够好,那么您可以这样做。

您只需要使用transientwriteObject等来定制某些内容(例如,根本不写密码,或者以某种加密的方式写出密码)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28162578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档