23

オンラインと自分の知識の両方でこれに対する答えを見つけようとしましたが、決定的で明確な答えを見つけることができないようです.

インポートする必要がある別のパッケージのクラスを1回だけ使用しているとしますmyPack.anotherPackage.ClassName

import ステートメントを使用する場合の違いは何ですか?

import myPack.anotherPackage.ClassName;

完全修飾名の使用:

myPack.anotherpackage.ClassName classInst = new myPack.anotherpackage.ClassName();

?

明らかに、この質問ClassNameは が一度しか使用されない場合にのみ適用されます。

4

7 に答える 7

24

インポートステートメントを使用すると、完全なパッケージでコードが乱雑にならないため、コードが読みやすくなります。

の競合がある場合は、その場合にのみ、完全修飾名ClassNamesを使用することをお勧めします。

于 2012-08-10T18:31:36.477 に答える
11

なし、私の意見では。バイトコードを見てください-違いはありません。

 javap -c <your class>
于 2012-08-10T18:30:43.310 に答える
6

1.重要性よりreadability価値を重視する。functional

2. importステートメントは、完全なパッケージ名をor名と共にcleaner code使用して a than を提供します。 classinterface

3.ただし、あいまいなパッケージをインポートするときは注意が必要です。

  `java.awt.List` and `java.util.List`

次に、以下のように、1 つを完全にインポートし、もう 1 つを完全なパッケージ名でインポートする必要があります。

import java.util.List;

and 

java.awt.List l = new java.awt.List();
于 2012-08-10T18:47:06.257 に答える
3

コードがコンパイルされた後、違いはありません。どちらの場合も、バイト コードには完全修飾名があります。つまり、クラス名はコンパイラによって自動的に修飾名に置き換えられます。クラスを参照するために完全修飾名を書く必要がないので、プログラマーの生活を楽にするだけです。

于 2014-06-04T05:27:13.150 に答える
1

特にここで引用されている特定の単純なケースでは、実際の違いはありません。Java: インポートまたは明示的なパッケージ/クラス名を使用しますか?を参照してください。

于 2012-08-10T18:41:55.607 に答える
0

私の知識からは違いはありません。唯一の違いは、コードの冗長性です。一般に、冗長になるほど読みにくくなります。おそらくバイトコードを見ますか?

于 2012-08-10T18:31:23.833 に答える