warra 2009-06-03 19:27
浏览 180
已采纳

关于从Socket中读取对象的问题

从客户端向socket中写入一个类型为A的对象,服务器端从socket中读取这个对象
服务器端:A a = (A)objInput.readObject();用一个类型A的变量引用了客户端传过来的对象

想问一下,
1 对象A在传向服务器的过程中,都传递了一些什么?(对象a,对象a的Class描述对象,对象a引用的对象?还是其它?)

2 并且在服务器端,用A来引用了这个对象,那么这个A和客户端程序中的A有什么区别?

3 传过来的对象,说得是通过反序列化得到的,获取这个对象,对应着一个什么样的类装载器?

  • 写回答

1条回答 默认 最新

  • SalinEgria1 2009-06-05 14:02
    关注

    1.通过java的序列化技术将Object转换为byte[](jdk源码可看,原理很简单的,主要是迭代记下对象的每个属性类型以及值)。
    2.对象引用不同了(显然,都不在一个JVM里)。
    3.反序列化的时候会通过反射动态创建对象的,jvm启动时候会有3个classloader,一个是装在java.lang.*的,一个是装载java api中其他class的,一个是装在用户写的class的。用的是第三个classloader。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?