ObjectInputStream.ResolveClass(ObjectStreamClass) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したストリーム クラスの説明に相当するローカル クラスを読み込みます。
[Android.Runtime.Register("resolveClass", "(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;", "GetResolveClass_Ljava_io_ObjectStreamClass_Handler")]
protected virtual Java.Lang.Class? ResolveClass(Java.IO.ObjectStreamClass? desc);
[<Android.Runtime.Register("resolveClass", "(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;", "GetResolveClass_Ljava_io_ObjectStreamClass_Handler")>]
abstract member ResolveClass : Java.IO.ObjectStreamClass -> Java.Lang.Class
override this.ResolveClass : Java.IO.ObjectStreamClass -> Java.Lang.Class
パラメーター
- desc
- ObjectStreamClass
クラスのインスタンス ObjectStreamClass
返品
に対応する Class オブジェクト desc
- 属性
例外
オブジェクトのクラスが見つからない場合は 。
クラスの作成時に I/O エラーが発生した場合は 。
注釈
指定したストリーム クラスの説明に相当するローカル クラスを読み込みます。 サブクラスは、このメソッドを実装して、クラスを代替ソースからフェッチできるようにします。
ObjectOutputStreamの対応するメソッドはannotateClass。 このメソッドは、ストリーム内の一意のクラスごとに 1 回だけ呼び出されます。 このメソッドはサブクラスで実装して代替の読み込みメカニズムを使用できますが、 Class オブジェクトを返す必要があります。 返されると、クラスが配列クラスでない場合、その serialVersionUID はシリアル化されたクラスの serialVersionUID と比較され、不一致がある場合は逆シリアル化が失敗し、 InvalidClassException がスローされます。
ObjectInputStreamでのこのメソッドの既定の実装は、呼び出しの結果を返します
Class.forName(desc.getName(), false, loader)
ここで、 loader は次のように決定されます。現在のスレッドのスタックに、宣言クラスがユーザー定義クラス ローダーによって定義されたメソッド (および反射呼び出しを実装するために生成されたものではなかった) がある場合、 loader は現在実行中のフレームに最も近いメソッドに対応するクラス ローダーです。それ以外の場合、 loader は null。 この呼び出しによってClassNotFoundExceptionが発生し、渡されたObjectStreamClassインスタンスの名前がプリミティブ型または void のJava言語キーワードである場合、そのプリミティブ型または void を表すClass オブジェクトが返されます (たとえば、"int"という名前のObjectStreamClassがInteger.TYPEに解決されます)。 それ以外の場合、 ClassNotFoundException はこのメソッドの呼び出し元にスローされます。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。