0

デコレータの実験を始めたところです。私が見たことのないものの 1 つは、Immutable Forwarding Decorators です。私が取り組んでいるサンプルコードはこちら

デコレータに ImmutableSet を指定できるようですが、ImmutableSet が ForwardingSet の「デリゲート」である場合、コンパイル時の警告は表示されません。

ForwardingSet を拡張して ForwardingImmutableSet を作成し、それをデコレータとして使用する必要がありますか?

誰もこれを試しましたか?

どんなアドバイスも役に立ちます。

上記のコードリンクを使用して、これを試してください:

public void test1()
    {
        final ImmutableSet<String> stringsA = ImmutableSet.of("A1", "A2", "A3");

        final ISetA a = SetA.of(stringsA);

        a.add("A0");                // Run-time error
        stringsA.add("A0");     // Compile time warning, Run-time error
    }

「a.add("A0");」のコンパイル時の警告を確認したいだけです。

もちろん、より制限されたインターフェイスを作成する選択肢があり、そこから始めることもできますが、ForwardingImmutableSet を実行する必要があるかどうかを知りたいのですが、どこから始めればよいでしょうか?

4

1 に答える 1

0

@Deprecated不変コレクションのミューテーション メソッドの警告が必要な場合は、フォワーディング デコレータでミューテーション メソッドをマークして、警告を自分で追加する必要があります。

ImmutableSet一般に、Guava の不変コレクションは意図的にサブクラス化できないため、実際には不変ではない実装などでサブクラス化することはできません。

于 2013-02-28T18:06:47.207 に答える