誰かが私にJavaのインポートステートメントを説明できますか?一部のインポートには*接尾辞が付いていますが、そうでないものもあります。これら2つの違いは何ですか?importステートメントで*を使用すると、すべてのクラスがインポートされますか?
ここを参照してくださいインポート
ここで彼らは、importステートメントはネストされているように見えますが、そうではないと言っています。誰かが詳細に説明できますか?
の使用は*
悪い習慣と見なされます。そのパッケージ内のすべてのファイルをインポートするために使用されます。これを行うためのより正しい方法は、特に IDE の外部でコード レビューを行っていて、使用しているクラスのバージョンを知る必要があるシナリオで、必要な各クラスをリストすることです。基本的に、それは開発チームの怠惰を助長します。
コメント
私が述べたように、これは「悪い」習慣ではないと主張する人のために。これが良い習慣だとどうして言えるでしょうか。
import java.util.*;
import java.io.*;
コンパイラが、インポートした*
を除く の下のすべてを無視したとしても、将来コードを調べる人にとって、これはどのように役立つのでしょうか? List
ここにいる多くの人は、コードを書いているのは人間のためであり、コンピューターのためではないことを忘れていると思います。さらに、Java がなくなり、SuperAwesomeLanguage を使用している場合、このコードをどのように変換できますか? 次の例が与えられた場合、Java の知識がゼロの場合は、これを新しい言語に変換してください。
public class Foo
{
private List list;
}
ですか?List
_ 必要ですかio
?io
問題は、あなたが知らないことです。したがって、明確にすることで、将来の開発者にどのクラスが必要かを案内できます。
import ステートメントで * を使用すると、すべてのクラスがインポートされますか?
はい。
type-import-on-demand 宣言を使用すると、名前付きパッケージまたは型のすべてのアクセス可能な型を必要に応じてインポートできます。
あなたのリンクから:
import java.util.*;
* は、任意の文字の組み合わせに一致する「正規表現演算子」です。したがって、この import ステートメントは java.util 内のすべてをインポートします。上記のサンプル プログラムを入力して実行しようとした場合は、インポート ステートメントを次のように変更できます。
そうです * 接尾辞は、このパスのすべてのクラスをインポートします
import com.example.*
com.example パッケージ内のすべてのクラスをインポートします
import com.example.ClassName
ClassName クラスのみをインポートします