Java Can';阅读后,不要添加到对象

Java Can';阅读后,不要添加到对象,java,object,arraylist,file-io,Java,Object,Arraylist,File Io,这是创建的对象,我们向其中添加一个元素 ArrayList <Apartma> poljeApartma = new ArrayList<Apartma>(); poljeApartma.add(new Apartma()); //size(1) 我就是这样读的: try { ObjectInputStream ois = new ObjectInputStream (new GZIPInputStream(new FileInputStream("apartm

这是创建的对象,我们向其中添加一个元素

ArrayList <Apartma> poljeApartma = new ArrayList<Apartma>();
poljeApartma.add(new Apartma()); //size(1)
我就是这样读的:

try {
    ObjectInputStream ois = new ObjectInputStream (new GZIPInputStream(new FileInputStream("apartman.ser")));
    poljeApartma = (ArrayList<Apartma>) ois.readObject();
    } catch (Exception aaa) {
        System.out.println("Tezave "+aaa.toString()); 
    }
但是,当我从文件中取出对象后,尝试将其添加到该对象时,它什么也不做

poljeApartma.add(new Apartma()); //size(1)

我用简单的ArrayList进行了尝试,效果很好。我在这里做错了什么,或者我的其余代码是垃圾。

您的对象已成为只读对象。JVM无法确定读取文件时检索到的对象实际上是一个
列表
,其中包含
整数
。它肯定是一个
列表
,但对于其余部分,没有什么是确定的

这是您的代码的等价物

List<Integer> i = Arrays.asList(1,2,3,4);
Object o = i;
List<Integer> list = (List<Integer>) o;
System.out.println(list);
list.add(5); // Runtime Exception

这是一个完美的解决方法。创建一个新的
ArrayList
对象,并将浇铸对象作为参数提供给它

List<Integer> i = Arrays.asList(1,2,3,4);
Object o = i;
List<Integer> list = new ArrayList<>((List)o);
list.add(5);
System.out.println(list); // [1,2,3,4,5]
List i=Arrays.asList(1,2,3,4);
对象o=i;
List List=新的数组列表((List)o);
增加(5);
System.out.println(列表);//[1,2,3,4,5]

你的代码
poljeApartma=newarraylist((List)ois.readObject());
请包括一个。
List<Integer> i = Arrays.asList(1,2,3,4);
Object o = i;
List<Integer> list = (List<Integer>) o;
System.out.println(list);
list.add(5); // Runtime Exception
List<Integer> i = Arrays.asList(1,2,3,4);
Object o = i;
List<String> list = (List<String>) o;
System.out.println(list);
List<Integer> i = Arrays.asList(1,2,3,4);
Object o = i;
List<Integer> list = new ArrayList<>((List)o);
list.add(5);
System.out.println(list); // [1,2,3,4,5]
poljeApartma = new ArrayList<>((List)ois.readObject());