0

タイトルが適切かどうかわかりませんが、ここに私の質問があります

たとえば、クラスを書きました

バージョン 1

class SomeClass
{
    public method1()
    {
        ...
        ...
    }

    public method2()
    {
        ...
        ...
    }
}

SomeClass のオブジェクトは、さまざまなモジュールによってメッセージ キューにプッシュされます。

module1
module2
module3

その後処理されますmodule4

今、module3いくつかの追加機能 method3() が必要なので、追加機能を SomeClass に追加しました

バージョン 2

class SomeClass
{
    public method1()
    {
        ...
        ...
    }

    public method2()
    {
        ...
        ...
    }

    public method3()
    {
        ...
        ...
    }
}

この新しいクラスで更新されましmodule3module 4が、module1とmodule2はそうではありません

module3(バージョン 2)のオブジェクトをSomeClassメッセージ キューにポストしますがmodule1、(バージョン 1)module2のオブジェクトも引き続きポストしますSomeClass

module 4バージョン 2 定義のオブジェクトがバージョン 1 定義のオブジェクトを読み取るのに問題はありますか?

4

1 に答える 1

1

理論的には、(を使用してObjectMessage) オブジェクトをメッセージ キューにプッシュすると、標準の Java シリアル化メカニズムを使用してシリアル化されるため、機能する可能性があります。シリアライゼーションはメソッドを気にしません。フィールドのみを使用します。これは、オブジェクト v1 をシリアル化し、クラス バージョン 2 を使用して逆シリアル化できることを意味します。しかしprivate static long serialVersionUID、クラスに特別なフィールドを追加し、その値を手動で管理する必要があると思います。

したがって、フィールドの番号と順序が同じで、メソッドのみが異なる v1 と v2 は同じになりますserialVersionUID

于 2012-10-26T16:03:56.597 に答える