如何在java中序列化ArrayLIst而不出现错误?

2023-12-07

我只是想输出一个先前创建的 ArrayList 以将其序列化以供将来存储。

但是当我尝试这样做时,我收到运行时错误“notSerializedException:Department。

有没有一种特殊的方法来序列化 arrayList?

有人能告诉我为什么我可能会收到此错误。

这是代码:

   import java.awt.*;
   import java.util.*;
   import java.io.*;
   import java.io.Serializable;

   public class tester1ArrayListObjectSave
  {

    private ArrayList <Department> allDeps = new ArrayList<Department>();
    private int choice = 0;
    private String name;
    private String loc; 


    Department theDepartment;
    Scanner scan;   

    public static void main(String[] args)
    {   

    new tester1ArrayListObjectSave();       

    }

    public tester1ArrayListObjectSave()
    {
            scan = new Scanner(System.in);
            options();
    } 

    public void options()
    {
        System.out.println("wadya wanna do");



        System.out.println("1. create a new department");
        System.out.println("2. read from text file");
        System.out.println("4. save it to system as a serializable file");
        System.out.println(". read from text file");
        System.out.println("3. to exit");

        choice = scan.nextInt();
        workOutOptions();

    }

    public void workOutOptions()
    {
        if (choice ==1)
        {
            createNewEmp();
        }
        else if (choice ==2)
        {
            try
            {
            readTextToSystem();
            }
            catch (IOException exc)
            {
                System.out.println("uh oh their was an error: "+exc);
            }
        }
        else if (choice == 3)
        {
            System.exit(0);
        }
        else if (choice ==4)
        {
            try
            {
            createSerialisable();
            }
            catch (IOException exc)
            {
                System.out.println("sorry could not serialise data cause of this:"+exc);
            }
        }
        else
        {
            System.out.println("do nothing");
        }
    }


    public void createNewEmp()
    {


            System.out.println("What is the name");
            name = scan.next();
            System.out.println("what is the chaps loc");
            loc = scan.next();
            try
            {
                saveToSystem();
            }
                catch (IOException exc)
            {
            // do something here to deal with problems
            }
            theDepartment = new Department(name,loc);

            allDeps.add(theDepartment);

            options();
    }

    public void saveToSystem() throws IOException
    {
        FileOutputStream fos = new FileOutputStream( "backUp.txt", true ); 
        PrintStream outFile = new PrintStream(fos);
        System.out.println("added to system succesfully");
        outFile.println(name);
        outFile.println(loc);
        outFile.close();
        options();      
    }

    public void readTextToSystem() throws IOException
    {
        Scanner inFile = new Scanner ( new File ("backUp.txt") );
        while (inFile.hasNextLine())
        {
        name=inFile.nextLine();
        System.out.println("this is the name: "+name);
        loc = inFile.nextLine();
        System.out.println("this is the location: "+loc);
        Department dDepartment = new Department(name,loc);
        allDeps.add(dDepartment);
        options();

        }
        System.out.println(allDeps);
    }

    public void createSerialisable() throws IOException
    {
        FileOutputStream fileOut =  new FileOutputStream("theBkup.ser");
        ObjectOutputStream out =  new ObjectOutputStream(fileOut);
        out.writeObject(allDeps);
        options();
    }

}

ArrayList这不是问题;你的Department对象是。

您需要实施Serializable该对象中的接口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在java中序列化ArrayLIst而不出现错误? 的相关文章

随机推荐

  • Chrome 扩展程序在 ajax 更改上运行内容脚本

    我有一个 chrome 扩展 可以在网站上进行一些更改 编辑评论 最近对网站进行更改后 网站不是我的 评论块使用 ajax 加载 之前是整个页面重新加载的简单发布请求 现在 如果我第一次加载页面 内容脚本可以工作 但是当我转到下一页时 比如
  • Facebook 无法识别 Netlify 上的一些 Gatsby React Helmet 元标签

    我的一些 但不是全部 Gatsby React Helmet 元标签似乎被 Facebook 迷失了 这是代码
  • 当闪亮正忙并且显示加载文本时,如何禁用所有操作按钮

    在闪亮的应用程序内 我想在应用程序运行时禁用所有按钮 我有很多操作按钮 依赖项和一些 renderui 东西 所以我认为使用闪亮js disable button 是至关重要的 并且超过 40 个及更多按钮非常不干净 当闪亮的应用程序繁忙时
  • 与 Oracle 集群的 JDBC 连接

    我想连接到此 TNS 描述的集群 Oracle 数据库 MYDB DESCRIPTION ADDRESS PROTOCOL TCP HOST host1 PORT 41521 ADDRESS PROTOCOL TCP HOST host2
  • 注解字段与其 getter 方法 JPA 之间的区别

    我试图弄清楚直接注释 以 id 为例 getter 方法和相关字段之间是否存在差异 如果我注释该字段 JPA 是否使用某种反射来调用相应的 getter 因为在我的例子中 我试图混淆我的实体类 所以我正在寻找一种保留业务逻辑的方法 因为 g
  • 从 chrome 位置 /usr/bin/google-chrome 启动的进程不再运行,因此 ChromeDriver 假设 Chrome 因 Selenium 崩溃了

    我正在 ubuntu 服务器上运行 jupyter 笔记本 我正在尝试使用 chromedriver 运行下面的 selenium 代码 我收到下面的错误 但如果我在 Ubuntu 终端中运行下面的代码行 它会返回下面的输出 有谁知道问题可
  • 一张图颠覆

    有谁知道基础的好的插图吗颠覆用法 类似于此目录中的图像 http www ivy fr mercurial ref v1 0 他们是为了水银 单个图像说明了最常见的操作 那个更详细 来自Subversion svn 快速入门
  • 如何生成不重复的随机数

    我正在尝试随机化数组中的数字 我可以使用arc4random indexes count 我的问题是 如果一个数组由 20 个项目组成 则每次数组洗牌时 在 5 个批次中 应该出现不同的数字 例子 第一次洗牌 1 4 2 5 6 第二次洗牌
  • SVM 分类 - 每个类别的最小输入集数量

    我正在尝试构建一个应用程序来检测来自网页的广告图像 一旦我检测到这些 我将不允许它们显示在客户端 从我得到的帮助这个 Stackoverflow 问题 我认为 SVM 是实现我的目标的最佳方法 所以 我自己编写了 SVM 和 SMO 我从
  • 最后打印页面的 HTML 页脚

    我想打印我的 html 页面 我有超过一页的内容 我只想在最后一页的底部打印页脚 我的CSS page size 8 5in 11 0in margin left 0 7cm margin top 0 7cm margin top 0 7c
  • rand() 函数未生成足够的随机数

    我正在开发一个 openGL 项目 我的 rand 函数没有给我足够大的随机范围 我的任务是编写一个钻石程序 其中一颗钻石位于屏幕中央 五颗钻石随机放置在屏幕的其他位置 发生的情况是我的中心钻石位于它应该在的位置 而其他五个钻石则在中心左侧
  • 我创建了一个有多个敌人的游戏太空侵略者

    我想创建 1 个额外的敌人 我在循环列表时遇到问题 但是当我这样做时 我不断收到此错误 enemyX i enemyX change i IndexError list index out of range 这是我的代码 num of en
  • 俄罗斯套娃到百叶窗xsl改造

    我一直在尝试编写一个 xslt 转换 将 俄罗斯娃娃 样式的 xsd 转换为 威尼斯盲人 样式 我写了一些东西 但并不完全按照我的预期工作 所以我有以下xsd文档
  • 在 Chrome 中,当焦点位于已注册 onChange 和 onBlur 处理程序的 TextArea 上时,无法在 FocusPanel 上获得 onClick()

    我不喜欢在我的应用程序中使用 Button s 因为它们在视觉上太重了 我想我可以使用具有图像的按钮 但我发现我认为是一个更简单的解决方案 不需要使用图像 只需制作一个 InlineLabel 并将其放入 FocusPanel 中 然后拦截
  • 根据本地安全策略验证新的 AD 密码?

    我想允许当前用户更改其密码 通过活动目录管理 我想验证然后在 Active Directory 中设置他们的密码 当前使用SetPassword调用方法 我的问题是验证密码 使其满足复杂性要求 不包含用户的帐户名或 用户全名的一部分 超过两
  • WINAPI EnumWindowsProc:非标准语法;使用 & 创建指向成员的点

    当我调用 EnumWindows EnumWindowsProc 0 时 我不断收到错误消息 它将我的 BOOL CALLBACK SelectionWindows EnumWindowsProc HWND hWnd long lParam
  • 如何更新光标位置? [复制]

    这个问题在这里已经有答案了 可能的重复 在 RichTextBox 中设置光标 private void richTextBox1 TextChanged object sender EventArgs e string text rich
  • 如何为特定任务创建 Ant 监听器

    我们的应用程序中有大约 80 个 jar 全部都是使用ant中的javac任务和jar任务创建的 我想介绍一下 findbug 检查 一种选择是创建单个 findbug 检查 ant 项目 其中包含所有 jars 和定义的所有源路径 这可行
  • 布尔运算符如何在“if”条件下工作?

    我目前是 Python 新手 正在尝试运行几行简单的代码 我无法理解 Python 在之后如何评估这个语法if陈述 任何解释将不胜感激 number int raw input Enter number if number 1 or 2 o
  • 如何在java中序列化ArrayLIst而不出现错误?

    我只是想输出一个先前创建的 ArrayList 以将其序列化以供将来存储 但是当我尝试这样做时 我收到运行时错误 notSerializedException Department 有没有一种特殊的方法来序列化 arrayList 有人能告