开发者

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<开发者_JS百科;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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜