1

Date オブジェクトを含む Arraylist をシリアル化し、それを逆シリアル化し、逆シリアル化されたバージョンを反復できるようにしたいと考えています。

現在、Serializable を実装する DateSerialize というクラスがあります。日付オブジェクトを配列リストに追加する方法があり、それが完了したらシリアル化したいと思います。

次回プログラムを実行するときに、その配列リストを逆シリアル化し、それらのオブジェクトを同じ順序と形式で取得し、その上で反復子を実行したいと考えています。

誰でもこれで私を助けることができますか??

ありがとう !

4

2 に答える 2

0

(ミリ秒単位の日付の内部値)DateSerializeとして保存しないのはなぜですか?long

于 2012-07-23T15:14:51.363 に答える
0

Serializable を使用する場合、ArrayList は String およびすべてのプリミティブ型と同様に Serializable であるため、問題はありません。public class DateSerialize implements Serializable {}残りを行う必要があります。この方法の詳細については、こちらをご覧ください。ただし、シリアル化には他にも多くのオプションがあります。ですから、もっと具体的にお願いします。

最初: ArrayList と配置するオブジェクトの作成

ArrayList aList = new ArrayList();
MyBusinessObject obj = new MyBusinessObject();
obj.Name = "MyName";
obj.Address = "MyAddress";
obj.Phone = 435345;
aList.Add(obj);

2 番目: ArrayList のシリアル化

/// <summary>
/// Serialize the ArrayList
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
private string SerializeArrayList(ArrayList obj) { 
  System.Xml.XmlDocument doc = new XmlDocument();
  Type[] extraTypes = new Type[1];
  extraTypes[0] = typeof(MyBusinessObject);
  System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), extraTypes); 
  System.IO.MemoryStream stream = new System.IO.MemoryStream(); 
  try { 
    serializer.Serialize(stream, obj); 
    stream.Position = 0; 
    doc.Load(stream); 
    return doc.InnerXml; 
  } catch { throw; } finally { 
    stream.Close(); 
    stream.Dispose(); 
  } 
}

3 番目: ArrayList の逆シリアル化

/// <summary>
/// DeSerialize serialized string
/// </summary>
/// <param name="serializedData"></param>
/// <returns></returns>
private ArrayList DeSerializeArrayList(string serializedData) {
  ArrayList list = new ArrayList();
  Type[] extraTypes = new Type[1];
  extraTypes[0] = typeof(MyBusinessObject);
  System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), extraTypes);
  XmlReader xReader = XmlReader.Create(new StringReader(serializedData));
  try {
    object obj = serializer.Deserialize(xReader);
    list = (ArrayList)obj;
  } catch { throw; } finally {
    xReader.Close();
  }
return list; 
}
于 2012-07-23T15:09:26.670 に答える