2010-12-28 25 views
107
public class Contact implements Serializable { 
    private String name; 
    private String email; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 
} 
  1. いつSerializableインターフェイスを実装する必要がありますか?
  2. なぜそれをするのですか?
  3. 利点やセキュリティはありますか?

答えて

106
  1. What's this "serialization" thing all about?から:

    それはあなたが、 オブジェクトまたはオブジェクトのグループを取り、後でそれから、有線または無線 輸送機構を介してディスク上に置くか、それらを を送信できます、 おそらく別のコンピュータで、逆 プロセス:元の オブジェクトを復活させてください。基本的なメカニズムは、 のビットの1次元ストリームに のオブジェクトをフラット化し、 はそのビットのストリームを元のオブジェクト に戻します。

    可能性の別の場所で、それはその後、1と0の そのシーケンスを取って、すべての複雑な何か を取って、1と0のフラット シーケンスにそれを回すについてですスタートレック、 上のトランスポーター(おそらく 、同様に別の 時)とオリジナルの再構築 複雑な "何か"。

    したがって、オブジェクトのコピーを保存して、同じシステムまたはネットワークを介して別のプロセスに送信する必要がある場合は、Serializableインターフェイスを実装します。

  2. オブジェクトを保存または送信したいからです。

  3. オブジェクトの保存と送信が容易になります。それはセキュリティとは関係ありません。

+3

すべてのドメインモデルに直列インターフェイスを実装するのがベストプラクティスですか。 – theJava

+6

@theJavaベストプラクティスの問題ではありません。一連のバイトが必要かどうかという疑問です。 – marcog

+1

JSONを使用する場合、このインターフェースを実装する必要はなく、単純にその文字列を送ることができます。したがって、JSONを使用できるときにこのインターフェースを使用する理由はまだわかりません。 –

29
  1. あなたがバイトまたはときにSerializableオブジェクトは、あなたのクラスのインスタンスを参照するかもしれないと思うのシリーズにクラスのインスタンスを変換することができるようにしたいときSerializableインターフェイスを実装します。

  2. Serializableクラスは、インスタンスを永続化したり、ワイヤで送信したりする場合に便利です。

  3. Serializableのインスタンスを簡単に送信できます。シリアライゼーションにはいくつかのセキュリティ上の問題があります。 Joshua Blochの "Effective Java"を読んでください。

関連する問題