3

がありObjectInputStream、カスタムでクラスをロードしたいClassLoader

したがって、関数ObjectInputStreamをオーバーライドするサブクラスが作成されますresolveClass()

今私の問題は、ClassLoader実行中に変更したいということです。しかし、私がこのストリームresolveClass()で実行すると、実行されないように見えることがあります。readObject()次に、クラスに間違ったがロードされますClassLoader

なぜresolveClass()実行されないのか、この問題を解決する方法はありますか?

4

2 に答える 2

2

resolveClass()ストリーム内のクラス記述子ごとに1回呼び出されます。同じ完全修飾クラス名に対して複数の記述子を記述した場合、おそらく指定されていない場合、どうなるかわかりません。正しい解決策は、複数のストリームを使用することです(互いにネストすることができます)。

于 2013-01-17T19:08:54.467 に答える
0

のJava APIドキュメントからObjectInputStream.resolveClass()

このメソッドは、ストリーム内の一意のクラスごとに 1 回だけ呼び出されます。

可能なクイック&ダーティフィックス:

送信後は必ず電話reset()してください。ObjectOutputStreamこれにより、ストリームが新しいものであるかのようにリセットされ、既にクラスを送受信したことが忘れられます。

于 2013-01-17T19:09:55.010 に答える