存储到memcached的所有对象都必须实现Serializable接口。今天修改系统缓存实现,从系统内部的Cache转到memcached。在转换过程中出现了内部类因为不能序列化导致设置缓存失败。写了以下的测试代码测试内部类的序列化:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import junit.framework.TestCase;
public class SerializableInnerClassTest extends TestCase
{
class Person implements Serializable{
String name;
String password;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
}
public void testSerializable(){
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos;
try
{
oos = new ObjectOutputStream(out);
oos.writeObject(new Person());
oos.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
assertTrue(out.toByteArray().length > 0);
}
}
这个测试跑的话将会抛出java.io.NotSerializableException异常。
后查找资料,发现内部类改成静态内部类后,序列化成功。
这是咋会事情呢?静态内部类和非静态内部类在序列化过程中有什么不同呢?
分享到:
- 2006-11-09 11:56
- 浏览 7623
- 评论(5)
- 论坛回复 / 浏览 (5 / 10956)
- 查看更多
相关推荐
NULL 博文链接:https://sunzone.iteye.com/blog/1998125
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象。要添加System.Web.Extensions.dll的...
单例模式的在调用的时候生成对象(使用内部类) 以及对应的防止序列化导致的不相同
fastjson和jackson序列化数据的区别直奔主题一言不合就上代码注意 直奔主题 1、fastjson将字符串反序列化为对象时,只会处理第一层,内部会序列化为JsonObject或者JsonArray,使用二级结构和三级结构时还要再次处理...
主要介绍了Java 序列化和反序列化实例详解的相关资料,需要的朋友可以参考下
shelve是一个简单的数据存储方案,类似key-value数据库,可以很方便的保存python对象,其内部是通过pickle协议来实现数据序列化。shelve只有一个open()函数,这个函数用于打开指定的文件(一个持久的字典),然后...
它还允许根据条件对对象进行序列化/反序列化。 这个工具在前端和后端都非常有用。 示例如何与angular 2一起使用。 源代码可。 目录 什么是类变压器 在JavaScript中,有两种类型的对象: 普通(文字)对象 类...
帮助类可以存在于单独的类文件中或者作为一个静态类的内部类。 使用帮助类可以极大地简化开发过程,尤其是在处理复杂的功能或涉及多个对象之间的交互时。例如,一个日期帮助类可以提供各种日期计算和格式化的方法,...
《深入.NET平台和C#编程》内部测试题-笔试试卷加答案 一 选择题 1) 以下关于序列化和反序列化的... c) 如果一个类可序列化,则它的子类和包含的各成员对象也一定可序列化 d) 标识一个类可以序列化要使用[Serializable]
JVM 内部 - 序列化
"WPF 图形设计器系列:分组、对齐、排序、序列化和常用功能" 本文是 WPF 图形设计器系列的最后一篇,介绍如何给图形设计器增加分组、对齐、排序、序列化等功能。 分组 在 WPF 中,不允许一个对象作为多个其他元素...
其反序列化的内部机制基于store库。 序列化直接生成ByteString,而不依赖于ByteString Builder。与其他图书馆的比较扁平-打包(!),速度更快,编译时间更长存储-更快的序列化,依赖于机器,更大的库,很多依赖...
DonerSerializer是一个C ++ 14仅限标头的库,它为您提供了一个简单的接口,可通过几行代码对类数据进行序列化/反序列化。 内部使用: 支持的类型 内置类型 std::int32_t std::uint32_t std::int64_t std::uint...
ts_serialize可以帮助您: 将camelCase类成员转换为snake_case JSON属性以与REST API一起使用从REST API有效负载中排除内部字段将数据类型转换为内部格式,例如: Date的支持的序列化类型建于天野 :sauropod: 贡献...
简单对象序列化 扩展Object.ToJson 有时候需要将对象内部的成员全部打印出来。就用这个扩展...
序列化-stl STL(ASCII 和二进制)文件序列化 从网格生成 (STereoLithography) ASCII 字符串或二进制缓冲区。 如果未提供,则在内部计算面法线。 安装 $ npm install serialize-stl 用法 var serializeSTL = ...
对于序列化Django数据的解决方案已经有以下几种:django.core.serializers Django内部建序列化器,它可以序列化Django模型查询集,但无法直接序列化单独的Django model数据。如果你的模型里包含混合数据,这个序列化...
六、序列化和反序列化:解释了Java中序列化和反序列化的概念,以及通过实现Serializable接口进行对象的序列化和反序列化的过程。 七、内部类和匿名类:介绍了Java中的内部类和匿名类的概念,包括不同类型的内部类...
进行序列化时,我们通常不希望在生成的JSON中看到此类Property对象的内部,而是希望看到该Property所持有的实际值。 例如,假设Person类的定义如下: public class Person { private final StringProperty ...
比瑟网 .NET dotnet 的跨平台 BINARY 和 JSON 序列化程序。 内部不使用反射,仅使用托管代码,在使用 AOT 编译器的和中完美运行,这使其成为 、 、 、 的可能替代方案。 具有与 protobuf-net 和 NetJSON 相同的 ,更...