シリアル化されるオブジェクトに他のシリアル化可能なオブジェクトへの参照が含まれている場合はどうなりますか?

質問者:Thu Stumpf |最終更新日:2020年5月8日
カテゴリ:テクノロジーおよびコンピューティングデータベース
4.7 / 5 (455ビュー。25投票)
Aシリアル化されるオブジェクトに他のシリアル化可能なオブジェクトへの参照が含まれている場合はどうなりますか?シリアル化されるオブジェクト他のオブジェクトへの参照含まれている場合、それらのオブジェクトの状態もすべて、問題のオブジェクトのシリアル化された状態の一部として保存されます

したがって、オブジェクトがシリアル化できない場合はどうなりますか?

質問:クラスのメンバーの1つがSerializableインターフェイスを実装していない場合はどうなりますか?回答:あなたは、オブジェクトが直列化可能なオブジェクトの参照が含まれている場合、その後持つNotSerializableExceptionがスローされます実装Serializableインタフェース、包みオブジェクトをシリアル化してみてください。

同様に、シリアル化プロセスは同じオブジェクトへの複数の参照をどのように処理しますか? 3つの答え。 Javaシリアル化メカニズムは、同じオブジェクトへの複数の参照を認識しており、それらを複製しません。オブジェクトは一度保存され、すべての内部参照が保持されます。デシリアライズ後、オブジェクトは同じ状態になります。1つのインスタンスとそのオブジェクトへの複数の参照のみです。

このように、シリアル化可能なインターフェイスを実装せずにオブジェクトをシリアル化できますか?

シリアル化は、オブジェクトの状態をバイトストリームに変換するメカニズムです。スーパークラスがシリアルできない場合でも、サブクラスはシリアルできます。スーパークラスはシリアル可能インターフェイスを実装していませんが、サブクラス自体がシリアル化可能インターフェイスを実装している場合は、サブクラスオブジェクトをシリアル化できます

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

Ans)Serializableはマーカーインターフェイスです。オブジェクトをネットワーク経由で(通常はrmiまたはEJBを介して)転送する必要がある場合、またはオブジェクトの状態をファイルに永続化する必要がある場合、オブジェクトクラスはSerializableインターフェイスを実装する必要があります。

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

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

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

オブジェクトをシリアル化するとどうなりますか?

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

親クラスがシリアル化できない場合はどうなりますか?

直列化可能サブクラスのフィールドは、ストリームから復元されます。また、シリアル化例外は、シリアル化されるクラスがシリアル化可能でない場合にのみスローされます。シリアル化できないを持つことは問題ありません(引数のないコンストラクターがある限り)。オブジェクト自体はシリアル化可能ではなく、すべてがそれを拡張します。

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

いくつかのオプションがあります。Addressクラスのサブクラスを作成して使用します。このクラスをシリアル化可能としてマークできます。アドレスを一時的なものとしてマークします。 3つの答え
  1. あなたは従業員を維持することができます。
  2. Addressがnullの場合、Addressのタイプがシリアル化できない場合でも、従業員全体をシリアル化できます。

なぜ休止状態でシリアル化が必要なのですか?

シリアライズ可能は、JVMインスタンス間でIIOPまたはJRMP(RMI)を介してデータを転送するために必要です。純粋なWebアプリケーションの場合、ドメインオブジェクトキャッシュ/最適化の目的でHTTPSessionに保存されることあります。 httpセッションシリアル化(パッシベーション)またはクラスター化できます。

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

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

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

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

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

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

シリアル化されたオブジェクトをネットワーク経由で転送できますか?

はい、Javaシリアル化オブジェクトネットワーク経由で送信できるバイト形式のままであるため、ネットワーク経由でシリアル化オブジェクトを転送できますシリアル化されたオブジェクトをBlobとしてディスクまたはデータベースに保存することできます。

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

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

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

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

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

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

シリアル化可能なインターフェイスとは何ですか?

シリアル化可能なインターフェイスSerializableはマーカーインターフェイスです(データメンバーとメソッドはありません)。これは、Javaクラスを「マーク」して、これらのクラスのオブジェクトが特定の機能を取得できるようにするために使用されます。 CloneableとRemoteはマーカーインターフェイスでもあります。オブジェクトを永続化するクラスによって実装する必要があります。

オブジェクトのプロパティのシリアル化を妨げるキーワードはどれですか?

これは、シリアル化プロセスに参加することを防ぐために使用されます。 Javatransientキーワードシリアル化で使用さます。データメンバーを一時的なものとして定義すると、シリアル化されません。 Javaのtransientキーワードは、フィールドシリアル化してはならないことを示すために使用されます。

オブジェクトのコンストラクターは、シリアル化解除されたときに呼び出されますか?

私たちはとき-オブジェクトをシリアライズ、そのクラスのコンストラクタが呼び出されることありません。ここでは、2つのインスタンス変数とデフォルトコンストラクタ(2つのハードコード値で初期化)し、パラメータ化コンストラクタを持つクラスという名前の生徒を持って、次の例を考えてみましょう。

Javaでインターフェースをシリアル化できますか?

彼らはシリアライズとデシリアライズされるべきである場合は、Java直列化インタフェース(javaの直列化は、あなたのクラスのインターフェイスマーカーでは、実装する必要があります。Javaオブジェクト直列化(書き込み)にObjectOutputStreamで行われるとデシリアライズ(読み込み)がObjectInputStreamので行われます。

C#でのシリアル化とは何ですか?

シリアル化は、オブジェクトを格納するか、メモリ、データベース、またはファイルに送信するバイトのストリームにオブジェクトを変換するプロセスです。その主な目的は、必要なときにオブジェクトを再作成できるように、オブジェクトの状態を保存することです。逆のプロセスは逆シリアル化と呼ばれます。