包含多个对象的ArrayList的序列化,不保存对象状态
我似乎无法弄清楚为什么序列化会保存和恢复对象列表 ,而不是它们的状态。 显示列表,但不显示对象中包含的标题。 对象类实现Serializable。
对象的序列化(“c”):
arrayList.add ( c ); String fileName = "testFile"; try { FileOutputStream fos = this.openFileOutput ( fileName, Context.MODE_PRIVATE ); ObjectOutputStream os = new ObjectOutputStream ( fos ); os.writeObject ( arrayList ); fos.close (); os.close (); } catch ( Exception ex ) { ex.printStackTrace (); } }
反序列化:
FileInputStream fis = this.openFileInput ( fileName ); ObjectInputStream ois = new ObjectInputStream ( fis ); arrayList = ( ArrayList ) ois.readObject (); ois.close (); return arrayList;
将对象添加到适配器:
for ( TestObject c : arrayList ) { adapter.add ( c ); }
编辑:TestObject类的一部分:
public class TestObject implements Serializable { private String mName; @Override public String toString () { return mName; } public String getName () { return mName; } public void setName ( String name ) { mName = name; }
是的,它也适合我检查
public class SerializationIssue { private static final String fileName = "testFile"; public static void main(String[] args) { TestObject object1= new TestObject(); TestObject object2=new TestObject(); object1.setName("object1"); object2.setName("object2"); List list=new ArrayList (); list.add(object1); list.add(object2); serializeList(list); ArrayList deserializedList=desializeDemo(); System.out.println(deserializedList.get(0).getName()); } private static ArrayList desializeDemo() { ArrayList deserializedList; try { FileInputStream fileIn = new FileInputStream(fileName); ObjectInputStream in = new ObjectInputStream(fileIn); deserializedList= (ArrayList ) in.readObject(); in.close(); fileIn.close(); }catch(IOException i) { i.printStackTrace(); return null; }catch(ClassNotFoundException c) { System.out.println("Employee class not found"); c.printStackTrace(); return null; } return deserializedList; } private static void serializeList(List list) { // TODO Auto-generated method stub try { FileOutputStream fos = new FileOutputStream(fileName); ObjectOutputStream os = new ObjectOutputStream ( fos ); os.writeObject ( list ); fos.close (); os.close (); } catch ( Exception ex ) { ex.printStackTrace (); } } }
TestObject
bean
public class TestObject implements Serializable{ /** * serial version. */ private static final long serialVersionUID = 1L; String name; public TestObject(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
输出:object1