简体   繁体   中英

Can multiple classes serialize the same object in Java?

I am serializing an ArrayList in 2 classes:

private void serializeQuotes(){
        FileOutputStream fos;
        try {
            fos = openFileOutput(Constants.FILENAME, Context.MODE_PRIVATE);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(quotesCopy); 
            oos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }
    }

    @SuppressWarnings("unchecked")
    private void deserializeQuotes(){
        try{
            FileInputStream fis = openFileInput(Constants.FILENAME);
            ObjectInputStream ois = new ObjectInputStream(fis);
            quotesCopy = (ArrayList<Quote>) ois.readObject();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
    }

Let's assume:

1. Class A serializes Quotes
2. Class B deserializes Quotes
3. Class B adds stuff to Quotes
4. Class B serializes Quotes

Can I safely assume Quotes will be updated and is in sync between the two classes?

From what you've described, no.

Serializing an object basically just writes a snapshot of it to a stream so that it can be saved to disk or transferred elsewhere and read. There is no syncing of data involved. Changing an object you've deserialized will have no effect on the object it was originally serialized from... there's no link whatsoever. Simply serializing the object to a shared file won't cause any kind of syncing either, since nothing that is using the file is going to automatically read the file and synchronize its state when the file is written to without you adding code to approximate that effect yourself.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM