1

以下の 2 つのコード行の違いを教えてもらえますか?

ArrayList<Car> dat;
dat = (new DataSource()).getCar();

DataSource ds = new DataSource();
dat = ds.getCar(); 

new DataSource()括弧を付けるとはどういう意味ですか?

最後に、これら 2 つの場合の dat の結果はどうなるでしょうか。

 ArrayList<Car> dat;

 ArrayList<Car> dat = new ArrayList();

注: ヘルパーgetCar関数は ArrayList を に返しますdat

4

3 に答える 3

4

投稿したコードの 2 つのバージョンに実質的な違いはありません。datどちらの場合も同じ値になります。

あなたが投稿したコードの 2 番目のバージョンは人間にとってより読みやすいので、コードのメンテナンスと可読性の観点から、そのバージョンを使用することをお勧めします。

また、最初のバージョンでは、(new DataSource()) の結果への参照を格納していないため、(new DataSource()) の値を他の場所で使用することはできません。もちろん、コード内の他の場所で結果が必要ない場合、これは問題ではありません。

ArrayList<Car> dat;質問の 2 番目の部分については、Java ではと同じであると考えることができますArrayList<Car> dat = null;。そのような参照を宣言すると、それは何も指しません。ただし、宣言するとArrayList<Car> dat = new ArrayList<Car>;、新しい ArrayList オブジェクトが作成され、dat参照されます。

于 2013-09-17T03:19:06.870 に答える
4

ArrayList<Car> dat;
dat = (new DataSource()).getCar();

括弧は不要です。同等に書けます

dat = new DataSource().getCar();

あなたが引用した他のバージョンでは、DataSource後で使用できるように、を参照する変数を作成するという追加のことを行っています。

2 番目の質問への回答として、

ArrayList<Car> dat;

オブジェクトを作成しません。ここにはありArrayListません。何も参照しない変数だけです。一方で、

ArrayList<Car> dat = new ArrayList();

ArrayListAND を参照する変数の両方を作成します。

于 2013-09-17T03:45:40.803 に答える
2

唯一の違いは、2 番目の例では、メソッド呼び出しの間、DataSource オブジェクトへの参照を保持することです。また、外側の括弧は不要です。

于 2013-09-17T03:21:54.070 に答える