1

このNotePadProviderサンプルコードContentValuesでは、 nullでなくても、パラメーターが重複していることに気付きました。

ContentValues values;
if (initialValues != null) {
    values = new ContentValues(initialValues);
} else {
    values = new ContentValues();
}

一見すると、これは冗長に見えます。次のように書く方が効率的だと思われます。

ContentValues values;
if (initialValues != null) {
    values = initialValues;
} else {
    values = new ContentValues();
}

しかし、それはサンプルの作成者が選択したことではなく、私の質問はなぜですか?

4

1 に答える 1

4

それらは同等ではありません。元のコードは「initialValues」のコピーを作成し、次にメソッドは変数の新しいインスタンスの変更に進みますvalue。このようにして、そのメソッドContentValuesに提供されたインスタンスは、このメソッドによって変更されませんinsert

あなたのバージョンは元のオブジェクトを変更するため、プログラムの他の領域で望ましくない副作用が生じる可能性があります。

于 2012-08-06T16:32:49.793 に答える