Java "static import" und "import static" in Java 8
Ich versuche zu verwenden, verwenden Sie statische Importe auf Java, aber ich war das schreiben es falsch
static import java.lang.System.out;
Ist und der code kompiliert (obwohl das "aus" symbol konnte nicht gefunden werden), keine syntax-Fehler.
So, was bedeutet das "static import" eigentlich bedeutet?
- Wirklich? Das sollte ein syntax-Fehler nach docs.oracle.com/javase/specs/jls/se5.0/html/syntax.html -- das Schlüsselwort import können erst beginnen, eine import-Deklaration.
- Es wird nicht kompiliert für mich... welche IDE benutzt du?
- Auch, wo haben Sie diese Codezeile? Eclipse gibt mir eine Fehlermeldung, ob ich ihn vor der Deklaration einer Klasse oder innerhalb einer Klasse.
- Dieser sollte gekennzeichnet werden, da ein syntax-Fehler, unabhängig davon, ob die Kennung importiert werden, vorhanden ist ...
- Also ist es ein bug, bin ich mit Sun ' s Java 8 SDK (1.8) Vorschau für Mac OS X. Es sollte ein syntax-Fehler gibt (auch wenn die "aus" - symbol nicht gefunden wird, weil wenn ich System.aus.println, mit der "static import", das Programm kompiliert ohne Fehler oder Warnung).
- Ah! Dies könnte zu einem compiler-Fehler, oder es könnte eine Veränderung in der Java-8 Sprache, die ich nicht kenne. JLS 8 ist noch nicht verfügbar / fertig gestellt.
- gute Frage...
- Bezweifle ich, es ist eine Sprache ändern: beide "static import" und "import static" zu verwirrend wäre.
- Keine Sprache änderungen in diesem Bereich vorgesehen sind, für Java 8. Scheint wie ein bug. Bitte erstellen Sie es. Danke.
- wie wurden Sie versucht zu kompilieren keine Möglichkeit, es kompiliert wird, sollten Sie Hinzugefügt mehr info OS, etc
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte dies nicht kompilieren.
Entsprechend der JLS, eine single-static-import sollte so Aussehen:
Alle Formen des Java-import-Anweisung start mit die
import
Schlüsselwort, und ich glaube nicht, dass es irgendeinen anderen Kontext (d.h. abgesehen von einer import-Anweisung), in dem dieimport
- Schlüsselwort verwendet werden kann.Hinweis: die
import
undstatic
keywords sind nicht der Optionen in diesem Zusammenhang, so der "Modifikatoren können sein geliefert in jeder beliebigen Reihenfolge" meta-Regel gilt hier nicht.Kurz gesagt, entweder dein compiler /IDE defekt ist oder verwirrt ... oder das, was Sie sehen, ist nicht real Java-source-code.
Anscheinend war es ein bug.
Ich bin mit Java 8 (JDK 1.8) von Sun, um zu testen, die lambdas... aber ich dachte, es war seltsam, die "static import" akzeptiert zu werden.
Danke für die vielen Antworten. Ich werde diesen Bericht zu Sun. 🙂
Werden, um Zugriff auf statische member einer Klasse, müssen Sie den vollständigen Klassennamen, die es enthält. Zum Beispiel, um den Zugriff auf die
pi
Wert in derMath
Klasse, die Sie haben zu verwendenjava.lang.Math.PI
. Aber, wenn Sie Sie importiert haben (import static java.lang.Math.PI
), die Sie verwenden können, verwenden Sie einfachPI
im code darauf zugreifen.