40、Java中的对象序列化、参数传递与JNDI技术详解

Java中的对象序列化、参数传递与JNDI技术详解

1. 对象序列化与参数传递

1.1 值传递

在使用RMI - IIOP调用方法时,远程方法的所有参数都是通过值传递的。这意味着当客户端调用服务器时,所有参数都会从一台机器复制到另一台机器。这与Java编程语言中对象的传递方式不同,在Java中调用方法并传递对象参数时,是通过引用传递的,即复制对象的引用,而不是实际对象的数据。

值传递存在一个问题:如果要通过网络传递一个包含对其他对象引用的对象,这些引用如何在目标机器上解析呢?因为一台机器上的内存地址在另一台机器上并不对应相同的内存地址,而且被引用的对象可能在目标机器上根本不存在。

1.2 对象序列化

Java引入了对象序列化的概念来解决这个问题。序列化是将Java对象转换为该对象的二进制表示形式(位块)。可以将位块发送到任何地方,例如,可以将对象序列化作为对象的即时文件格式并保存到硬盘。RMI也使用对象序列化通过网络发送参数。

当需要再次使用对象时,必须将位块反序列化回Java对象。要使对象可序列化,对象必须实现 java.lang.Serializable 接口。这是一个标记接口,不定义任何方法,只是标识对象可以被序列化和反序列化。

也可以通过在对象上实现 writeObject() 方法提供自定义序列化,或通过实现 readObject() 方法提供自定义反序列化。这在需要在对象转换为位块之前对数据进行某种压缩,并在位块恢复为对象后进行解压缩时可能很有用。

序列化规则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值