a.java には import java.io.* があります。すべての Java をドラッグしてプロジェクトにリンクしましたが、一部は赤いアイコンになり、a.java は黄色になりました。赤のものにはインポートがなく、インポートがないかのように振る舞いますが、それが私がそこに a.java を置いた理由です。うまくいかないのはなぜですか?
2 に答える
インポートのスコープは、それが表示される .java ファイルです。つまり、a.java に何かをインポートしても、b.java にはまったく影響がありませんでした。
「インポート」キーワードには、実際にはやや残念な名前が付いています。Java を初めて使用する人は、Java が何らかの形で「何かを引っ張っている」と思い込んでいることがよくあります。実際に行うことは、別のパッケージ内の何かを参照するための省略形を提供することだけです。たとえば、そのクラスをインポートして「File」として参照するのではなく、必要な場所に「java.io.File」と書くことができます。コンパイルされたコードは、完全修飾名のインポートを使用するかどうかにかかわらず、最終的にまったく同じになります。
A.java
持っているからといって、にアクセスできるとimport java.io.*;
は限りません。それらが同じパッケージにある場合でも、明示的に使用したいものをインポートする必要があります。これは、JLS の§6.3および§7.5で指定されています。B.java
java.io.*;
B.java
セクション6.3から:
import 宣言は、実際に import 宣言を含むコンパイル単位内でのみ、型またはメンバーを単純な名前で使用できるようにします。インポート宣言によって導入された型またはメンバーのスコープには、パッケージ宣言の PackageName、現在のコンパイル単位の他のインポート宣言、または同じパッケージの他のコンパイル単位は含まれません。