我的系统中存在大量callback
对象。回调
定义如下:
public interface Callback { void callback() throws Exception; } Callback cb = new Callback() { public void callback() { System.out.println("I'm here!"); } }
现在,我需要将这些callback
对象序列化为字节,以便将它们存储在redis服务器中,并在稍后取回以运行callback()
方法。
很明显,通常的序列化库在Java,如jackson,在这里是行不通的。为了运行callback()
代码,序列化的字节必须包含类信息。JDK序列化在这里是一个选项:
public interface Callback extends java.io.Serializable { void callback() throws Exception; } Callback cb = new Callback() { private static final long serialVersionUID = 1L; public void callback() { System.out.println("I'm here!"); } }
但是,通过这种方式,需要callback
的所有子类以及从callback()
方法引用的类来实现java.io.serializable
接口,该接口很难控制。
所以,我想知道是否有另一种不需要各种限制的序列化方式?
Java序列化存储的信息并不比jackson多。(除了Java序列化支持图和jackson支持树)都没有用序列化的数据存储代码。
通常尝试将代码与数据一起存储是一个坏主意。代码可以是;
相反,您应该确保要序列化的所有内容都在数据中,而不是代码中。
序列化的字节必须包含类信息
这不是序列化的工作方式。通常假设所有所需的类都可用于反序列化数据的过程。
回调的所有子类以及从回调引用的类()
当父级是可序列化的时,它的所有子类也将是可序列化的。
我们希望序列化Java类的模式,以便任何字段或类上存在的所有注释也序列化到模式中。 我没有找到这样做的工具。 Avro不处理非字符串映射键,FasterXML不处理循环引用。它们都不会将注释序列化到模式中。 是否有任何Java JSON(反)序列化程序可以做到这一点?
问题内容: 我有: 在MyClass2中是无法序列化的属性。如何序列化(和反序列化)此对象? 更正:MyClass2当然不是接口,而是类。 问题答案: 正如其他人指出的那样,Josh Bloch的Effective Java的 第11章是有关Java序列化的必不可少的资源。 该章中与您的问题有关的几点: 假设您要序列化MyClass2中不可序列化字段的状态,则MyClass必须可以直接访问该字段,
Json序列化和Jdk序列化在存储、效率上的对比? 在之前学习Redis时,我了解的是Json序列化比原生Jdk更高效,占用空间更小,所以无脑选择Json序列化。 但是最近我在看Pig开源框架中Oauth2的时候,发现存入Token令牌居然是用的Jdk序列化方式,我很疑惑,于是自己再用Json的方式去存,看看到底会有什么区别。 结果发现Json方式占用空间比Jdk的大了很多(Jdk为17)。 我又
问题内容: 我正在处理,&,但出现此错误。 请在下面检查我的实体 我该如何解决? 问题答案: 通过hibernate代理对象进行延迟加载时,我遇到了类似的问题。通过用以下方式注释具有延迟加载的私有属性的类来解决此问题: 我假设您可以在代理对象上添加打破JSON序列化到该批注的属性。 问题在于实体是延迟加载的,序列化是在实体完全加载之前发生的。
其中备注是对象内部的vavr列表字段。 现在,如果尝试将相同的值反序列化到对象中,则会出现错误: 当尝试反序列化时,为什么serified JSON文本不起作用? 在Java代码中有没有其他方法可以将vavr对象打印成文本格式并将其转换回POJO?
问题内容: 有没有一种方法可以序列化angularjs的功能? 我的帖子现在看起来像这样。 问题答案: 这不是使用AngularJS访问表单数据的方式。表单中的数据应在范围内绑定。 因此,使用一个对象,例如$ scope.formData,它将包含您的所有数据结构,然后应使用ng-model将每个表单元素绑定到此对象。 例如: http://jsfiddle.net/rd13/AvGKj/13/