1

次のように、1 つの名前だけで 2 つのオブジェクトを作成できます:
(私の質問はparamオブジェクトについてです)

List<ParameterClass> parameters = new ArrayList<ParameterClass>();
ParameterClass param = new ParameterClass();
param.setName("name1");
parameters.add(param);

param = new ParameterClass();
param.setName("name2");
parameters.add(param);

ご覧のとおり、このコードはコンパイルされ、うまく機能します。しかし、私の質問は、この種のコーディングをお勧めするかどうかです? 異なる目標に対して 1 つの変数を使用することは許容されますか? なぜ私たちはそれをすべきではないのですか?

ありがとう

4

6 に答える 6

2

変数の再利用は許容されますが、コードの可読性が損なわれ、見つけにくいバグにつながる可能性もあります。それに応じて重量を量る必要があります。

于 2013-05-26T07:42:48.063 に答える
1

パラメータの再利用に問題はありません。もちろん、コードの可読性は別の問題です。

于 2013-05-26T07:40:46.570 に答える
1

このコードでは

ParameterClass param = new ParameterClass();

param は、new() によって作成されたオブジェクトへの単なる参照です。new() を再度呼び出すと、参照は新しく作成されたオブジェクトを指します。したがって、ArrayList にデータを入力することを意図しているため、参照はここでは一種のダミーであると言えます。

ある意味では、これは実際には正しいアプローチです。実際に何が起こるかというとparameters.add(param); 、別の参照が作成され、古いオブジェクトを指しています。これで、作成した新しいオブジェクトに古い参照を自由に向けることができます。

于 2013-05-26T07:42:27.657 に答える
1

はい、これがこの変数を使用するすべてのコードである場合は許容されます

最初のものを宣言して初期化すると、コンパイラは param 変数が指すインスタンス用のメモリ領域を予約するコードを記述し、その変数を使用してプロパティを設定します。

ParameterClass param = new ParameterClass();
param.setName("name1");
parameters.add(param);

次に、メモリの別の領域を宣言して初期化し、同じ変数を使用してこの領域を指しますが、それは完全に異なる領域であり、2 つを混在させる方法はありません。

param = new ParameterClass();
param.setName("name2");
parameters.add(param);

もちろん、これらの領域への参照をコンテナ オブジェクトに渡して、後で取得できるようにする必要があります。

于 2013-05-26T07:42:28.973 に答える