热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于java:使用返回不正确布尔值的布尔数组列表反序列化对象

deserializing object with arraylist of booleans returning incorect boolean value


deserializing object with arraylist of booleans returning incorect boolean values


我目前正在为 android 上的闹钟创建一个应用程序,我遇到了一个问题,我希望这里有人能澄清一下。基本上我序列化一些对象并保存到文件中。这些对象每个都包含一个布尔类型的数组列表。代表警报应该响起的日子。我似乎能够很好地读取和读取序列化的"alarm_entity"对象,但我有一个问题。一旦"alarm_entity"对象被反序列化,每个对象中的数组列表似乎会错误地返回某些索引处的布尔值。一个例子是 1. 我将天的状态保存在代表一周中的天的复选框中 2. 重新启动设备。然后打开应用程序,布尔值在 GUI 中的表示不正确。例如,我有一个闹钟,并在相关复选框中将日期设置为"星期一"和"星期四",重新启动复选框时,我将设置为"星期一"和"星期五"。下面是我的"alarm_entity"类,它被序列化了。










public class alarm_entity implements Serializable {

private boolean state;
private boolean repeating;
private int hours;
private int mins;
private ArrayList<Boolean> days;
private final int numdays = 7;

 public alarm_entity(int hoursin, int minsin)
{

    days = new ArrayList<Boolean>();

    state = true;

    repeating = false;

    hours = hoursin;

    mins = minsin;

    initDays();
}

private void initDays()
{

    for(int i = 0 ; i < numdays; i++)

    {

        boolean temp = false;

        days.add(i, temp);

    }
}

public void setDay(int pos, boolean state)
{

    days.add(pos, state);
}

public ArrayList<Boolean> getDays()
{

   return days;
}

public int getMins()
{

    return mins;
}

public void setMins(int minsin)
{

    mins = minsin;
}

public boolean isState() {

    return state;
}

public int getHours()
{

   return hours;
}

public void setHours(int hoursin)
{

    hours = hoursin;
}

public void setState(boolean statein)
{

    state = statein;
}

public boolean getState()
{

    return state;
}
}



我已尝试在单元测试中测试此代码,它似乎工作正常,并且布尔值被反序列化,与保存时相同。

下面是我写报警对象的方法









@Override
public synchronized void writeToFile(final ArrayList alarmlist) {

    if(alarmfile == null) {

        createFile(Alarm_List.filename);

    }

    try

    {

        fostream = new FileOutputStream(alarmfile);

        oostream = new ObjectOutputStream(fostream);

        addAlarms(alarmlist);

        oostream.close();

        fostream.close();

    }

    catch(Exception ex)

    {

        ex.printStackTrace();

        Log.e("error","write exception");

    }

}

private void addAlarms(final ArrayList alarmlist) {

    Thread mythrd = new Thread(new Runnable() {

        @Override

        public void run() {

            for(alarm_entity alarm : alarmlist)

            {

                try {

                    oostream.writeObject(alarm);

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

        }

    });

    mythrd.start();

    try {

        mythrd.join();

    } catch (InterruptedException e) {

        e.printStackTrace();

    }

    Log.d("alarms writing","alarms saved");
}



如果有人能为我阐明这一点,那就太好了,因为我现在有点迷失了。我认为这个问题可能是由于序列化对象中的数组列表。无论如何提前谢谢。



相关讨论




  • 确保你阅读

  • 您的 setDay(int pos, boolean state) 不正确。

    你正在使用 days.add(pos, state); 这个方法在那个位置插入数据。

    要替换使用 days.set(pos, state); 代替。

    查看文档 List.set(int, E) 和 List.add(int, E)


  • 您的 setDay(int pos, boolean state) 不正确。

    你正在使用 days.add(pos, state); 这个方法在那个位置插入数据。

    要替换使用 days.set(pos, state); 代替。

    查看文档 List.set(int, E) 和 List.add(int, E)







您的 setDay(int pos, boolean state) 不正确。

你正在使用 days.add(pos, state); 这个方法在那个位置插入数据。

要替换使用 days.set(pos, state); 代替。

查看文档 List.set(int, E) 和 List.add(int, E)






推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
author-avatar
rockminer
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有