0

a.java には import java.io.* があります。すべての Java をドラッグしてプロジェクトにリンクしましたが、一部は赤いアイコンになり、a.java は黄色になりました。赤のものにはインポートがなく、インポートがないかのように振る舞いますが、それが私がそこに a.java を置いた理由です。うまくいかないのはなぜですか?

4

2 に答える 2

1

インポートのスコープは、それが表示される .java ファイルです。つまり、a.java に何かをインポートしても、b.java にはまったく影響がありませんでした。

「インポート」キーワードには、実際にはやや残念な名前が付いています。Java を初めて使用する人は、Java が何らかの形で「何かを引っ張っている」と思い込んでいることがよくあります。実際に行うことは、別のパッケージ内の何かを参照するための省略形を提供することだけです。たとえば、そのクラスをインポートして「File」として参照するのではなく、必要な場所に「java.io.File」と書くことができます。コンパイルされたコードは、完全修飾名のインポートを使用するかどうかにかかわらず、最終的にまったく同じになります。

于 2012-04-12T06:43:14.950 に答える
0

A.java持っているからといって、にアクセスできるとimport java.io.*;は限りません。それらが同じパッケージにある場合でも、明示的に使用したいものをインポートする必要があります。これは、JLS の§6.3および§7.5で指定されています。B.javajava.io.*;B.java

セクション6.3から:

import 宣言は、実際に import 宣言を含むコンパイル単位内でのみ、型またはメンバーを単純な名前で使用できるようにします。インポート宣言によって導入された型またはメンバーのスコープには、パッケージ宣言の PackageName、現在のコンパイル単位の他のインポート宣言、または同じパッケージの他のコンパイル単位は含まれません。

于 2012-04-12T07:02:02.073 に答える