`
noble510520
  • 浏览: 54259 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

NotSerializableException解决方法

 
阅读更多

NotSerializableException

问题描述:
想要写入对象的时候的时候回抛出NotSerializableException:类名

原因:
写入的对象没有序列化,即没有实现java.io.Serializable接口

解决方法:
将要被写出对象的类序列化,可以不设置序列号,这时由系统自动设置,也可以自己设置序列号
设置方法:

 private static final long serialVersionUID = xxxxxx;////xxxx看自己喜欢

系统自动生成的序列号serialVersionUID是根据类名,接口名,方法和属性等来生成的
所以只要更改了类中的属性、方法、各种名称就会使序列号发生变化,这时想要读取未改动类的时候的本地对象就会失败,因为读取的时候和卸写入的时候序列号不一样。

所以不想修改类之后这么麻烦,就会定义一个序列号

注意:
一、被static和transient(瞬间)修饰的字段或方法都是不被序列化的,也就是保存到本地和从本地读取的时候都不会操作这个东西

二、类中引用到的其他类的对象也需要序列化,比如如果类中用了ObjectOutputStream的话,会抛出NotSerializableException:java.io.ObjectOutputStream,意思是类ObjectOutputStream没有序列化

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics