2012-04-12 29 views
0

a.java importiert java.io. *; Ich zog das ganze Java, um mit dem Projekt zu verbinden, aber einige endeten mit einem roten Symbol, während a.java mit gelb endete. Die mit Rot haben keine Importe und handeln, als gäbe es keine Importe, aber deshalb habe ich a.java dorthin gelegt. Warum funktioniert es nicht?Warum benötigt Eclipse mehrere Importe?

+1

könnten Sie bitte Ihre Frage umformulieren –

+0

Gehen Sie zum Marker-Panel und untersuchen Sie alle Fehlermeldungen. Der Grund könnte etwas sein, an das du nicht gedacht hast. –

Antwort

0

Nur weil A.javaimport java.io.*; hat, bedeutet dies nicht, dass B.java Zugriff auf hat. B.java muss importieren, was es explizit verwenden möchte, auch wenn sie sich im selben Paket befinden. Dies ist in §6.3 und §7.5 der JLS angegeben.

Aus Abschnitt 6.3:

Eine Einfuhranmeldung macht Arten oder verfügbare Mitglieder durch ihre einfachen Namen nur innerhalb der Übersetzungseinheit, die die Einfuhranmeldung tatsächlich enthält. Der Umfang der durch eine Importdeklaration eingeführten Typ (en) oder Members enthält nicht den PackageName einer Package-Deklaration, andere Importdeklarationen in der aktuellen Kompilierungseinheit oder andere Kompilierungseinheiten in demselben Package.

1

Der Umfang eines Imports ist die .java-Datei, in der es angezeigt wird. Das heißt, etwas in a.java zu importieren, hatte keinerlei Auswirkungen auf b.java.

Das Schlüsselwort "import" hat tatsächlich einen etwas unglücklichen Namen. Leute, die neu in Java sind, nehmen oft an, dass es irgendwie "Dinge reinzieht". Alles, was es wirklich tut, ist eine Kurzschrift, um auf etwas in einem anderen Paket zu verweisen. Zum Beispiel könnten Sie einfach "java.io.File" überall dort schreiben, wo Sie diese Klasse haben möchten, anstatt sie zu importieren und als "Datei" zu bezeichnen. Der kompilierte Code endet genau gleich, egal ob Sie unsere vollqualifizierten Namen importieren.

+1

+1 da ich denke die Antwort ist richtig aber _definitely_ für die Entschlüsselung der Frage :-) – paxdiablo

+0

Warum ist das (Umfang eines Imports ist die .java-Datei, in der es erscheint) so? Warum nicht das Projekt? Was bedeutet das gelbe Symbol? – user93200

+0

Setzen Sie den Mauszeiger über das gelbe Symbol. Ein Popup informiert Sie über das Problem. Es ist möglicherweise ein Import, der nicht von dem Code in der Datei –

Verwandte Themen