java.io.NotSerializableException
结果发现序列不成功非静态内部类时的序列中,出现以下异常:
java.io.NotSerializableException: com.tang.sharedpreferencesdemo.MainActivity
W/System.err( 2356): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
W/System.err( 2356): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
W/System.err( 2356): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
W/System.err( 2356): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
W/System.err( 2356): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
W/System.err( 2356): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
经查资料和分析知道:
假设一个可序列化的对象包括对某个不可序列化的对象的引用,那么整个序列化操作将会失败,而且会抛出一个NotSerializableException.
非静态内部类拥有对外部类的全部成员的全然訪问权限,包含实例字段和方法。为实现这一行为,非静态内部类存储着对外部类的实例的一个隐式引用。序列化时要求全部的成员变量是Serializable,如今外部的类并没有implements Serializable,所以就抛出java.io.NotSerializableException异常。
解决的方法:
1.将内部类写成静态的
2.将内部类单独写一个.java档 implements Serializable
版权声明:本文博主原创文章。博客,未经同意不得转载。
最新文章
- csdn 泄露用户密码害人不浅啊。
- 基于jquery的相册预览gallery
- VML/SVG在Web开发中一些常见的框架
- HDU 5512 Pagodas (2015沈阳现场赛,找规律+gcd)
- 订阅基础:RSS、ATOM、FEED、聚合、供稿、合烧与订阅
- Oracle数据库 ORA-01555 快照过旧 (undo表空间:撤销表空间)
- android之PackageManager简单介绍
- Linux环境变量配置的三个方法--/etc/profile,~/.bashrc,shell
- ReactNative 基础学习
- sql 服务启动失败 SQL Server(MSSQLSERVER) 错误码126
- jQuery标签插件tagsinput.js
- TeamCity安装
- Spring boot+ logback环境下,日志存放路径未定义的问题
- Django之Form进阶
- [JSOI2004]平衡点/[BZOJ3680]吊打XXX
- 【Python045-魔法方法:属性访问】
- MySQL check table/optimize table/analyze table/REPAIR TABLE
- MsChart<;3>; 饼状图
- 监控服务器所有用户的操作记录(测试只记录root用户)
- BZOJ2738:矩阵乘法——题解
热门文章
- Inno Setup打包添加和去除管理员权限
- 【译】ASP.NET MVC 5 教程 - 5:使用 SQL 服务器 LocalDB 创建连接字符串
- hdu2222Keywords Search (特里)
- SWT中的GridLayout(转)例子不错
- Linux下将UTF8编码批量转换成GB2312编码的方法
- Windows phone 8 学习笔记(6) 多任务
- ASP.NET关于Login控件使用,LoginView&#160;控件,CreateUserWizard&#160;控件
- ThinkPHP的全部配置选项
- Java实现字符全阵列阵列
- Git代理服务器设置和访问Github