オブジェクトをシリアル化するには、どのインターフェイスを実装する必要がありますか?

質問者:Hodaifa Ganapathy |最終更新日:2020年4月18日
カテゴリ:テクノロジーおよびコンピューティングデータベース
4.9 / 5 (530ビュー。43投票)
Ans)Serializableはマーカーインターフェイスです。オブジェクトをネットワーク経由で(通常はrmiまたはEJBを介して)転送する必要がある場合、またはオブジェクトの状態をファイルに永続化する必要がある場合、オブジェクトクラスはSerializableインターフェイスを実装する必要があります。

さらに、シリアル化可能なインターフェイスを実装する場合、どのメソッドを実装する必要がありますか?

したがって、クラスの1つのインスタンスをシリアル化する場合、クラスはSerializableインターフェイスを実装する必要があります。良いニュースは、 Serializableが空のインターフェースであることです。つまり、メソッド宣言は含まれていません。目的は、オブジェクトがシリアル化可能なクラスを識別することです。

続いて、問題は、オブジェクトがシリアル化されるとどうなるかということです。 Aシリアル化されるオブジェクトに他のシリアル化可能なオブジェクトへの参照が含まれている場合はどうなりますか?シリアル化されるオブジェクトに他のオブジェクトへの参照が含まれている場合、それらのオブジェクトの状態もすべて、問題のオブジェクトのシリアル化された状態の一部として保存されます

さらに、オブジェクトをシリアル化可能にするために、シリアル化可能なインターフェイスのメソッドを実装する必要がありますか?

Javaで直列化しますが、クラスのオブジェクトが直列になりたい場合は、あなたがそれを行うために必要なすべてのJava実装します。 io。シリアル化可能なインターフェイス。 Javaで直列化は、マーカーインターフェイスであり、実装するために何のフィールドやメソッドを持っていません。

シリアル化可能を実装していないオブジェクトをどのようにシリアル化しますか?

いくつかのオプションがあります。Addressクラスのサブクラスを作成して使用します。このクラスをシリアル化可能としてマークできます。アドレスを一時的なものとしてマークします。 3つの答え

  1. あなたは従業員を維持することができます。
  2. Addressがnullの場合、Addressのタイプがシリアル化できない場合でも、従業員全体をシリアル化できます。

39関連する質問の回答が見つかりました

なぜシリアル化が必要なのですか?

シリアル化とは、Javaオブジェクトの状態をバイトに変換して、ネットワーク経由で送信したり、ハードディスクに保存したりすることです。ハードディスクまたはネットワークインフラストラクチャはハードウェアコンポーネントであり、Javaオブジェクトではなくバイトのみを理解するため、Javaオブジェクトを送信できないため、シリアル化が必要です。

シリアライズ可能を実装しないとどうなりますか?

あなたは、あなたがあなたのクラスをシリアル化する予定がない場合は、Serializableインタフェースを実装する必要ありません。実際、多くのクラスでは、 Serializableを使用しても意味がありません。シリアル化は、しかし、クラスファイルを共有するとは何の関係もありません。

シリアル化の用途は何ですか?

オブジェクトのシリアル化は、オブジェクトの状態をバイトストリームに変換するために使用されるプロセスです。バイトストリームは、ディスク/ファイルに永続化するか、ネットワークを介して実行中の他のJava仮想マシンに送信できます。バイトストリームからオブジェクトを作成する逆のプロセスは、逆シリアル化と呼ばれます。

シリアライズ可能をどのように実装しますか?

Javaオブジェクトをシリアライズ可能にするために、Javaを実装します。 io。シリアル化可能なインターフェイス。 ObjectOutputStreamクラスには、オブジェクトをシリアル化するためのwriteObject()メソッドが含まれています。

シリアル化および逆シリアル化プロセス中に使用されるメソッドはどれですか?

オブジェクトをシリアル化するには、writeObject()メソッドObjectOutputStreamを呼び出し、逆シリアル化には、ObjectInputStreamクラスのreadObject()メソッドを呼び出します。オブジェクトをシリアルするためにSerializableインターフェイスを実装する必要があります。

どのタイプのメンバーがシリアル化されていませんか?

どのタイプのメンバーがシリアル化されていませんか?説明:すべての静的変数と一時変数がシリアル化されているわけではありません

最終変数はJavaでシリアル化されていますか?

一時的および最終的最終変数はそれらの値によって直接シリアル化されるため、最終的変数を一時的として宣言することの使用/影響はありません。ただし、コンパイル時のエラーはありません。

デシリアライズ中に何が起こりますか?

シリアライズは、以前にシリアル化されたオブジェクトを元の形式、つまりオブジェクトインスタンスに再構築するプロセスです。デシリアライズプロセスへの入力は、ネットワークのもう一方の端を経由するバイトのストリームであるか、ファイルシステム/データベースから読み取るだけです。

静的変数はシリアル化されますか?

静的変数静的変数はクラスに属し、個々のインスタンスには属しません。シリアル化の概念は、オブジェクトの現在の状態に関係しています。クラスの特定のインスタンスに関連付けられたデータのみがシリアル化されるため、静的メンバーフィールドシリアル化中に無視されます。

シリアル化可能なインターフェイスにメソッドがないのはなぜですか?

UIDとカスタムリーダー/ライターはリフレクションを介してアクセスされます。シリアル化可能はマーカーであり、JRE / JVMはその存在に基づいてアクションを実行する場合があります。 Serializableにメソッドが含まれていません。これは、writeObjectメソッドとreadObjectメソッドを介してその作業を実行できるObjectOutputStreamクラスとObjectInputStreamクラスです。

オブジェクトの状態とは何ですか?

簡単に言うと、オブジェクトの状態は特定の時点での状態であり、オブジェクトの動作は、メソッドに格納されているオブジェクトが実行できることです。メソッドが実行されると、アクションが実行され、オブジェクトの状態が変更されます

シリアル化可能なマーカーインターフェイスはありますか?

Serializableは、Cloneableのようにマーカーインターフェイスと呼ばれますマーカーインターフェイス(メソッドの実装なし)を使用する場合、実行時またはコンパイル時に何かを追加またはチェックするようにjvmまたはコンパイラに指示する必要があります。マーカーインターフェイスの定義:マーカーインターフェイスは、コードを分類するための優れた方法でもあります。

外部化可能とは何ですか?

Externalizableは、カスタムルールとシリアル化のための独自のメカニズムを定義できるようにするインターフェイスです。 ExternalizableインターフェイスのwriteExternalメソッドとreadExternalメソッドを実装し、シリアル化用の独自のコントラクト/プロトコルを作成します。

Javaでシリアル化できないものは何ですか?

一時フィールド(一時修飾子付き)はシリアル化されません(つまり、保存または復元されません)。 Serializableを実装するクラスは、シリアル化をサポートしないクラス(ファイルストリームなど)の一時的なフィールドをマークする必要があります。静的フィールド(静的修飾子付き)はシリアル化されません。

JSONシリアル化とは何ですか?

JSONは、オブジェクトを文字列にエンコードする形式です。直列化手段は、その文字列にオブジェクトを変換し、デシリアライズは、(変換文字列- >オブジェクト)は、その逆の操作です。シリアル化は、これらの複雑なオブジェクトをそのような使用のためにバイト文字列に変換できます。

serialVersionUIDを生成するにはどうすればよいですか?

Java:serialVersionUIDを生成する方法
  1. serialverコマンド。 JDKには、serialVersionUIDを自動的に生成する「serialver」と呼ばれる組み込みコマンドがあります。
  2. EclispeIDEを使用します。 Eclipseを使用している場合は、シリアル化クラスの上にマウスを移動します。
  3. あなたが欲しいものならなんでも。独自のserialVersionUIDを指定し、番号を付けて、後ろに「L」を追加するだけです。

JVMはどのようにマーカーインターフェイスを識別しますか?

Javaのマーカーインターフェイス(Serializable、Clonnable、Remoteなど)、これらのいずれかを実装するクラスが特別な動作をすることをコンパイラーまたはJVMに示すために使用されます。このオブジェクトストリーム、別のJVMで読み取ることができます。