草庐IT

Serialization

全部标签

Java8 Lambda 反序列化 - ClassCastException

ClassCastException在满足以下条件时由Java8在反序列化lambda时抛出:父类有一个方法,引用该方法用于自动创建一个Serializablelambda有几个扩展它的子类,上面的方法有几种用法作为方法引用,但是有不同的子类方法引用被使用后,它被序列化和反序列化所有方法引用都在同一个捕获类中使用在OracleJava编译器和运行时版本1.8.0_91上测试。请找到有关如何重现的测试代码:importjava.io.*;/***@authorMaxMyslyvtsev*@since7/6/16*/publicclassLambdaSerializationTestimp

java - 未序列化的 Arraylist 始终为空

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。我有很多Java类,但这是我第一次尝试序列化任何东西。我制作了自己的类(class),其中包括一个数组列表。主要对象是这些类的数组列表。我相信我做的一切都是正确的,但是当我读回它时,arraylist总是空的。主要(主要是测试)类:importjava.io.*;importjava.util.ArrayList;publicclassIOTest{pu

java - 静态类变量和序列化/反序列化

来自SCJP6学习指南-有一个问题要求输出以下有关序列化的代码:importjava.io.*;publicclassTestClass{staticpublicvoidmain(String[]args){SpecialSerials=newSpecialSerial();try{ObjectOutputStreamos=newObjectOutputStream(newFileOutputStream("myFile"));os.writeObject(s);os.close();System.out.print(++s.z+"");s=null;//makesnodifferen

java - 如果父类不实现可序列化,则序列化子类?

publicclassEmployee2extendsEmployee1{}publicclassEmployee1extendsEmployee0{}publicclassEmployee0{}现在我序列化Employee2类和gettheerrorjava.io.NotSerializableException:Employee2现在如果将Employee1类定义更改为publicclassEmployee1extendsEmployee0implementsjava.io.Serializable{}它工作正常但请注意Employee0仍然没有实现Serializable基类必须

java - 有状态 session bean 是否应该实现 Serializable

我有一个简单的问题,但我找不到JavaEE6的答案!有状态sessionbean是否应该实现Serializable?我在实现和不实现java.io.Serializable的情况下进行了测试,没有任何不同,也没有错误。我的感觉告诉我,有状态sessionbean必须实现可序列化,因为它可以在长期session中保持... 最佳答案 不,它不需要,因为规范没有要求。您可以从以下位置下载和检查EJB规范:https://jcp.org/en/jsr/detail?id=318 关于java

java - jackson 设置默认 View

我正在使用Jackson2.3.2,我想设置ObjectMapper默认View第一次尝试:http://wiki.fasterxml.com/JacksonJsonViews#Implementation//short-cut:objectMapper.writeValueUsingView(out,beanInstance,ViewsPublic.class);//orfullyexploded:objectMapper.getSerializationConfig().setSerializationView(Views.Public.class);//(note:canalso

java - 将 PostgreSQL bytea-stored serialized-java-UUID 转换为 postgresql-UUID

我们的一个软件项目使用了一个PostgreSQL表,其中包含bytea类型的“guid”列。这与hibernate3.3.2.GA和PostgreSQL8.4一起使用,它使用javaobjectserialization序列化javaUUID类型.结果是类似于以下escape格式bytea文字的值:'\254\355\000\005sr\000\016java.util.UUID\274\231\003\367\230m\205/\002\000\002‌​J\000\014leastSigBitsJ\000\013mostSigBitsxp\273\222)\360*r\322\26

java - 在 Java 中序列化枚举有好的替代方法吗?

Java语言从添加枚举中获益良多;但不幸的是,在具有不同代码级别的系统之间发送序列化对象时,它们不能很好地工作。示例:假设您有两个系统A和B。它们都以相同的代码级别开始,但在某个时候开始看到不同时间点的代码更新。现在假设有一些publicenumWhatever{FIRST;}还有其他对象保留对该枚举常量的引用。这些对象被序列化并从A发送到B,反之亦然。现在考虑B有更新版本的WhateverpublicenumWhatever{FIRST;SECOND}然后:classSomethingElseimplementsSerializable{...privatefinalWhatever

具有静态初始化的 Java 序列化

在Java中,static和transient字段是不序列化的。但是,我发现静态字段的初始化导致生成的serialVersionUID被更改。例如,staticintMYINT=3;会导致serialVersionUID发生变化。在此示例中,这是有道理的,因为类的不同版本将获得不同的初始值。为什么任何初始化都会更改serialVersionUID?例如,staticStringMYSTRING=System.getProperty("foo");也会导致serialVersionUID发生变化。具体来说,我的问题是为什么使用方法进行初始化会导致serialVersionUID发生变化。

java - 使用 JAXB 解码具有不同/动态名称的元素

我正在解析具有如下节点的XML文档:..................元素data1、data2、data3总是一致的。只有父标记不同。在我的对象模型中,我有一个对象代表所有这些情况。在事先不知道元素名称的情况下,如何让JAXB处理这种情况?@XMLAnyElement匹配所有对象,但没有创建适当类型的对象;我得到了一个Node对象列表,而不是我的对象。我的对象目前看起来像:publicclassMyObject{protectedStringotherData;@XmlAnyElement@XmlElementWrapper(name="objects")protectedList