JAVA序列化 中出现问题

问题描述

看下我的程序片段我的客户端部分代码try{student=newStudent();student.setNum(Emter_UML.stunum);assitclient=newAssitClient_OO(student);assitclient.setsituation(1);//这是用来标记situation值,然后服务器端根据是1or2产生不同的结果System.out.println(assitclient.CreateSql(assitclient));Emter_UML.client.SentInforToServer(assitclient);ArrayList<ArrayList<String>>personalinforArray=Emter_UML.client.GetInforFromServer();personalinfor=newAssitDBalpha();jlabel.add(jLabel9);jlabel.add(jLabel10);jlabel.add(jLabel11);jlabel.add(jLabel12);jlabel.add(jLabel13);jlabel.add(jLabel14);personalinfor.setjlabel(jlabel);personalinfor.setpersonalinfor(personalinforArray);basecourseinfor=newAssitDBalpha();assitclient.setsituation(2);//重置situation的值Emter_UML.client.SentInforToServer(assitclient);ArrayList<ArrayList<String>>basecourseinforArray=Emter_UML.client.GetInforFromServer();basecourseinfor.setbasecourseinfor(jTable1,basecourseinforArray);}catch(IOExceptionex){Logger.getLogger(DBa.class.getName()).log(Level.SEVERE,null,ex);}catch(ClassNotFoundExceptionex){Logger.getLogger(DBa.class.getName()).log(Level.SEVERE,null,ex);}服务器端部分代码elseif(nameandpassinstanceofAssitClient_OO){si=(AssitClient_OO)nameandpass;intsituation=si.getsituation();System.out.println("situ-Server:"+situation);//两次situation均为1if(situation==1){Stringsql="select*fromlh.student_view"+si.CreateSql(si);System.out.println("SQL->:"+sql);re=con.CreateResult(sql);ArrayList<ArrayList<String>>tempdata=this.getdatafromresult(re);toclient.writeObject(tempdata);toclient.flush();//toclient.reset();}if(situation==2){Stringsql="selectc_num,c_name,depart,c_gredit,teacher,timefromlh.stu_sc2_view"+si.CreateSql(si);re=con.CreateResult(sql);ArrayList<ArrayList<String>>tempdata=this.getdatafromresult(re);toclient.writeObject(tempdata);toclient.flush();}}但是我在服务器端的得到的始终是一个相同的ArrayList<ArrayList<String>>,AssitClient_OO继承了序列化。。为什么两次发送不同的对象但在服务器端接受的是同一个对象呢???需要高手解答,或者自己举个小例子也可以的。。。。。

解决方案

解决方案二:
up!
解决方案三:
ArrayList<ArrayList<String>>,AssitClient_OO仅仅是个引用而已System.out.println("situ-Server:"+situation);//两次situation均为1//这是什么意思两次situation均为1那还不只做第一个if那还不相同?

时间: 2024-10-30 19:35:14

JAVA序列化 中出现问题的相关文章

Java 序列化的高级认识

引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写.然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出现的原因,使读者轻松牢记 Java 序列化中的一些高级认识. ----------

详解Java编程中对象的序列化_java

1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象.Java对象序列化就能够帮助我们实现该功能. 使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象.必须注意地是,对象序列化保存的是对象的"状态",

深入剖析Java编程中的序列化_java

 Java提供一种机制叫做序列化,通过有序的格式或者字节序列持久化java对象,其中包含对象的数据,还有对象的类型,和保存在对象中的数据类型. 所以,如果我们已经序列化了一个对象,那么它可以被读取并通过对象的类型和其他信息进行反序列化,并最终获取对象的原型. ObjectInputStream 和 ObjectOutputStream对象是高级别的流对象,包含序列化和反序列化的方法. ObjectOutputStream 拥有很多序列化对象的方法,最常用的是:   private void wr

java序列化的控制

正如大家看到的那样,默认的序列化机制并不难操纵.然而,假若有特殊要求又该怎么办呢?我们可能有特殊的安全问题,不希望对象的某一部分序列化:或者某一个子对象完全不必序列化,因为对象恢复以后,那一部分需要重新创建. 此时,通过实现Externalizable接口,用它代替Serializable接口,便可控制序列化的具体过程.这个Externalizable接口扩展了Serializable,并增添了两个方法:writeExternal()和readExternal().在序列化和重新装配的过程中,会

Java序列化的机制和原理

有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍. Java 序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.Java序列化API提供一种处理对象序列化的标准机制.在这里你能学到如何序列化一个对象,什么时候需要序列化以及Java序列化的算法,我们用一个实例来示范序列化以后的字节是如何描述一个对象的信息的. 序列化的必要性

Tiger中的注释,第1部分: 向Java代码中添加元数据

编程的一个最新的趋势,尤其是在 Java 编程方面,是使用 元数据.简单地说,元数据就是 关于数据的数据.元数据可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查.许多元数据工具,如 XDoclet(请参阅 参考资料),将这些功能添加到核心 Java 语言中,暂时成为 Java 编程功能的一部分. 直到可以使用 J2SE 5.0(也叫做 Tiger,现在是第二个 beta 版本),核心 Java 语言才最接近具有 Javadoc 方法的元数据工具.您使用特殊的标签集合来标记代码,并执行

ejb与java序列化(3) 开启enable-call-by-reference

问题终于找到,简单的说是因为java 序列化的效率低下,而ejb调用之间又大量使用序列化,因此造成极大的性能消耗,而且也影响到响应时间.仔细分析了一下项目情况,呵呵,情况非常严重,系统架构是按照三层来设计的,每个层都是ejb,调下一层都是通过远程接口,而且层之间可能还多个ejb的调用. (说句题外话,这种设计个人感觉非常,恩,不理解,性能杀手,而且ejb配置极其复杂,当然或者ejb本来就是如此,ebj和weblogic对我来说是很陌生很高深的东西,目前还没有深入掌握.) 很自然的会想到ejb2.

Java序列化——transient关键字和Externalizable接口

    提到Java序列化,相信大家都不陌生.我们在序列化的时候,需要将被序列化的类实现Serializable接口,这样的类在序列化时,会默认将所有的字段都序列化.那么当我们在序列化Java对象时,如果不希望对象中某些字段被序列化(如密码字段),怎么实现呢?看一个例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import java.io.Serializable; import java.util

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hibernate. 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求