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?
Antwort
Nur weil A.java
import 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.
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 da ich denke die Antwort ist richtig aber _definitely_ für die Entschlüsselung der Frage :-) – paxdiablo
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
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 –
- 1. Eclipse organisieren Importe: Wie JRE-Klassen bevorzugen?
- 2. Inline alle statischen Importe in Eclipse
- 3. Mehrere Importe des gleichen Dateinamens
- 4. Warum scheitern mehrere Importe aus der Hyper-Kiste?
- 5. Groovy in Eclipse erkennt keine Importe
- 6. Warum meine Importe nicht erkannt werden
- 7. CommonJS Importe vs ES6 Importe
- 8. Angular2 Fehler: Importe benötigt, um eine Suchleiste zu erstellen
- 9. Warum Paketimporte in Meteor benötigt werden
- 10. Wie werden mehrere Importe in Python durchgeführt?
- 11. Wie mehrere Importe unter einer Variablen haben
- 12. Warum funktionieren meine Python-PIL-Importe nicht?
- 13. Warum funktionieren meine Importe nicht mehr?
- 14. Warum SyntaxNet demo.sh findet keine korrekten Importe?
- 15. Warum werden diese als unnötige Importe gekennzeichnet?
- 16. Warum benötigt eine AWS-RDS-Subnetzgruppe mehrere Verfügbarkeitszonen?
- 17. Warum genau wird preferredMaxLayoutWidth benötigt?
- 18. Warum wird NotificationCompat benötigt?
- 19. Warum benötigt RVM YAML?
- 20. Warum benötigt sum GHC.Num.fromInteger?
- 21. Warum wird typeof benötigt?
- 22. Warum benötigt scanf &?
- 23. Warum benötigt DynamoDB expressionAttributeValue?
- 24. Warum Ersatzschlüssel benötigt werden?
- 25. Importieren Sie alle Importe in Eclipse auf einmal?
- 26. Organisation Importe in NetBeans
- 27. "Importe organisieren" in MonoDevelop
- 28. SSRS Berichtsparameter benötigt mehrere Werte
- 29. JQuery/CSS benötigt mehrere Klassen
- 30. Wiederholte Importe in Java vermeiden: Importe übernehmen?
könnten Sie bitte Ihre Frage umformulieren –
Gehen Sie zum Marker-Panel und untersuchen Sie alle Fehlermeldungen. Der Grund könnte etwas sein, an das du nicht gedacht hast. –