zoukankan      html  css  js  c++  java
  • 内部类实例化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
                {
                    
                }
            }
        }
  • 相关阅读:
    Web Designer Intern
    Internship UI/UX Web Designer
    HTML / CSS Frontend Software Engineer Internship
    CSS 07 文本
    CSS 06 背景
    CSS 05 尺寸大小
    CSS 04 注释
    CSS 03 选择器
    Why Ancient Greeks are Always Nude
    C#表示空字符
  • 原文地址:https://www.cnblogs.com/qiuhaojie/p/5835578.html
Copyright © 2011-2022 走看看