2012-02-24 8 views
0

私はいくつかの種類のAdressBookを実装しており、自分で実装されたDBの中のすべての連絡先をシングルトンHashMap<String, Contact> contactsDBとして保存したいと考えています。そのようなオブジェクトをシリアル化することは可能ですか?シングルトンオブジェクトをシリアライズする方法は?

+4

@Jak:はい、Rubyのドキュメントがここに役立ちます。 – skaffman

+0

削除されました...私の間違い... :(oops – Jak

答えて

0

は、いくつかのもの

// assume that the signleton is actually implemented correctly. 
public class IHateSingletons 
{ 
    Map<String, Contact> contactMap; 

    public void storeThatStuffs(final ObjectOutputStream outputStream) 
    { 
    outputStream.writeObject(contactMap); 
    } 

    public void readThatStuffs(final ObjectInputStream inputStream) 
    { 
    contactMap = (Map<String, Contact>)inputStream.readObject(); 
} 
+0

多くの連絡先(メモリ内ではあまりにも多く)はこの実装(hooty singleton)がひどい選択であることを示します。その場合は、実際のデータベースを使用してください。 – DwB

0

Java serializable APIをご覧ください。あなたのカスタムクラスが 'シリアライザブル'を実装しているといいですね。

0

シングルトン自体をシリアライズしないで、シングルトンが動作する基礎となるデータをシリアライズしてください。ここ

+0

100/1000/10000以上のcontacを持っていれば、それぞれをHashMapにデシリアライズしますか?それはCPUとメモリにあまりにも多くないのですか? – 4lex1v

+0

連絡先が制限されたリソースを持つモバイルデバイスを使用している場合を除き、連絡先の詳細、10000の連絡先を持つ人は多量のメモリ/ CPU /ストレージスペースを使用しません。 – assylias

+1

各連絡先が256バイトを使用する場合は、 1GBで16GBマシンを購入した場合、プレーンなHashMapを使用して40,000,000件の連絡先を保存できます.50〜50億を保存する場合は、別の解決方法があります。) –

2

は、あなたがこれを行う場合、あなたはあなたのクラスのシングルトンらしを一周するための方法を提供している(コードは、もはやgetObjectメソッドを経由していることに、注意してくださいされていません1つのオブジェクトしか作成されていないことを確認するメソッドでは、別々にシリアル化されたオブジェクトをデシリアライズすることはできません。

関連する問題