首页 > 代码库 > 内部类实例化Serializable
内部类实例化Serializable
昨天在做一个java项目的时候,发现下面代码中红色字体那行总是报NotSerializableException,查错误,MyRectangle这个类也明明实现了Serializable接口。
花了大半天,原来发现虽然MyRectangle虽然实现了Serializable接口,但MyRectangle在我的项目中是以内部类的形式定义的,
而内部类不能被序列化!
对于内部类来说,静态的内部类才可以被序列化,在MyRectangle类定义前加个static,问题就解决了。
以后还是提醒自己,尽量少用内部类,限制太多,以免造成不必要的麻烦。
还是先去查一下内部类和静态内部类的特点联系以及区别吧。
class MySaveListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(saveFileName==null) { jfc=new JFileChooser("d:/"); jfc.showSaveDialog(null); sf=jfc.getSelectedFile(); saveFileName=sf.getAbsolutePath(); try { ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream(saveFileName)); Iterator e10=vrectangles.iterator(); while(e10.hasNext()) { MyRectangle rectangle1=(MyRectangle)e10.next(); output.writeObject(rectangle1); } output.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } else { } } }
内部类实例化Serializable
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。