How can I store an arraylist of custom objects?

后端 未结 3 1993
悲&欢浪女
悲&欢浪女 2020-12-28 18:49

I have created an arraylist that is made up of custom objects. Basically the user will create a class and every time a class is created, a new Lecture (my custom object) is

3条回答
  •  被撕碎了的回忆
    2020-12-28 19:19

    You're in luck, all of your class' members are already serialzble so your first step is to say that Lecture is Serializable.

    public class Lecture implements Serializable {
    
        public String title;
        public String startTime;
        public String endTime;
        public String day;
        public boolean classEnabled;
    
        public Lecture(String title, String startTime, String endTime, String day, boolean enable){
            this.title = title;
            this.startTime = startTime;
            this.endTime = endTime;
            this.day = day;
            this.classEnabled = enable;
        }
    

    Next, you need to make a default constructor since serialization seems to require that. The last thing is you need to write your object out to a file. I usually use something like the following. Note this is for saving a game state so you might not want to use the cache directory.

    private void saveState() {
        final File cache_dir = this.getCacheDir(); 
        final File suspend_f = new File(cache_dir.getAbsoluteFile() + File.separator + SUSPEND_FILE);
    
        FileOutputStream   fos  = null;
        ObjectOutputStream oos  = null;
        boolean            keep = true;
    
        try {
            fos = new FileOutputStream(suspend_f);
            oos = new ObjectOutputStream(fos);
    
            oos.writeObject(this.gameState);
        }
        catch (Exception e) {
            keep = false;
            Log.e("MyAppName", "failed to suspend", e);
        }
        finally {
            try {
                if (oos != null)   oos.close();
                if (fos != null)   fos.close();
                if (keep == false) suspend_f.delete();
            }
            catch (Exception e) { /* do nothing */ }
        }
    }
    

    Reading the data back is pretty symmetric to the write so I have left that out for this answer. Also, there are still a lot of caveats to Serialized objects so I suggest you do some Google searches and read up on Java serialization in general.

提交回复
热议问题