Java-Quellcode navigieren und bearbeiten
Visual Studio Code ist in erster Linie ein Quellcode-Editor mit umfangreichen Bearbeitungsfunktionen Funktionen. In diesem Dokument werden einige Java-spezifische Funktionen behandelt, die bei der Arbeit mit Java hilfreich sind.
Wenn bei der Verwendung der unten aufgeführten Funktionen Probleme auftreten, können Sie uns kontaktieren, indem Sie ein Problem melden.
Code-Navigation
Mit der Gliederungsansicht können Sie bequem durch die Member der aktuellen Datei navigieren. Die Projektansicht bietet ebenfalls einen guten Überblick über Ihr Projekt. Als Java-Editor unterstützt sie auch Aufrufhierarchie, Typenhierarchie, Definitionsnavigation, Suche nach Typen im Workspace usw.
Symbole suchen
Sie können nach Symbolen in der aktuellen Datei oder im Workspace suchen, um Ihren Code schneller zu navigieren.
Symbole im Workspace suchen
Um ein Symbol im aktuellen Workspace zu suchen, drücken Sie zunächst ⌘T (Windows, Linux Ctrl+T) und geben Sie dann den Namen des Symbols ein. Eine Liste potenzieller Übereinstimmungen wird wie zuvor angezeigt. Wenn Sie eine Übereinstimmung auswählen, die in einer noch nicht geöffneten Datei gefunden wurde, wird die Datei geöffnet, bevor Sie zum Speicherort der Übereinstimmung navigieren. Alternativ können Sie auch Schnell öffnen (⌘P (Windows, Linux Ctrl+P)) verwenden und dann den Befehl '#' eingeben, um den aktuellen Workspace zu durchsuchen. ⌘T (Windows, Linux Ctrl+T) ist nur die Verknüpfung für die '#' Befehle, sodass alles gleich funktioniert.
Symbole in der aktuellen Datei suchen
Um ein Symbol in der aktuellen Datei zu suchen, verwenden Sie Schnell öffnen (⌘P (Windows, Linux Ctrl+P)), geben Sie dann den Befehl '@' ein und anschließend den Namen des Symbols, nach dem Sie suchen. Eine Liste potenzieller Übereinstimmungen wird angezeigt und beim Tippen gefiltert. Wählen Sie aus der Liste der Übereinstimmungen aus, um zu deren Speicherort zu navigieren.
Definition anzeigen
Sie können einen kurzen Blick auf die Definition eines Symbols werfen, indem Sie die Funktion "Definition anzeigen" verwenden. Diese Funktion zeigt einige Codezeilen in der Nähe der Definition in einem Vorschaufenster an, sodass Sie einen Blick darauf werfen können, ohne Ihren aktuellen Speicherort zu verlassen.
Um die Definition eines Symbols anzuzeigen, platzieren Sie den Cursor auf dem Symbol, wo immer es in Ihrem Quellcode verwendet wird, und drücken Sie dann ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10). Alternativ können Sie im Kontextmenü (Rechtsklick, dann Definition anzeigen auswählen) die Option Definition anzeigen wählen.
Zur Definition springen
Sie können auch schnell zu der Stelle navigieren, an der ein Symbol definiert ist, indem Sie die Funktion "Zur Definition gehen" verwenden.
Um zur Definition eines Symbols zu gelangen, platzieren Sie den Cursor auf dem Symbol, wo immer es in Ihrem Quellcode verwendet wird, und drücken Sie dann F12. Alternativ können Sie im Kontextmenü (Rechtsklick, dann Zur Definition gehen auswählen) die Option Zur Definition gehen wählen. Wenn es nur eine Definition des Symbols gibt, navigieren Sie direkt zu deren Speicherort. Andernfalls werden die konkurrierenden Definitionen in einem Vorschaufenster wie im vorherigen Abschnitt beschrieben angezeigt, und Sie müssen die gewünschte Definition auswählen.
Zur Super-Implementierung gehen
Sie können die Implementierungen von Klassen und überschriebene Methoden verfolgen, indem Sie beim Überfahren mit der Maus auf den Link Zur Super-Implementierung gehen klicken.

Aufrufhierarchie
Eine Ansicht der Aufrufhierarchie zeigt alle Aufrufe von oder an eine Funktion und ermöglicht es Ihnen, sich in Aufrufer von Aufrufern und Aufrufe von Aufrufen hineinzubohren. Klicken Sie mit der rechten Maustaste auf eine Funktion und wählen Sie Anzeigen > Aufrufhierarchie anzeigen.

Sie können auch mit der rechten Maustaste in einen Funktionskörper klicken und Aufrufhierarchie anzeigen auswählen.

Typenhierarchie
Eine Ansicht der Typenhierarchie zeigt die Vererbungsbeziehungen zwischen Java-Objekten an. Sie können mit der rechten Maustaste auf einen Typ klicken und Typenhierarchie anzeigen auswählen.
Faltungsregionen
Faltungsregionen ermöglichen es Ihnen, Codeausschnitte zu falten oder zu entfalten, um den Quellcode besser anzuzeigen.
Intelligente Auswahl
Mit Intelligente Auswahl (semantische Auswahl) können Sie den Auswahlbereich basierend auf den semantischen Informationen der Cursorposition in Ihrem Quellcode erweitern oder verkleinern.
- Um die Auswahl zu erweitern, verwenden Sie ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right).
- Um die Auswahl zu verkleinern, verwenden Sie ⌃⇧⌘← (Windows, Linux Shift+Alt+Left).
Semantische Hervorhebung
Syntaxhervorhebung ist ein wichtiges Feature, das es Ihnen ermöglicht, Code effizienter zu lesen. Mit Hilfe der Semantischen Hervorhebung kann VS Code basierend auf Symbolinformationen des Java-Sprachdienstes eine genauere Quellcode-Färbung bieten.
Unten sehen Sie ein Beispiel: Links ist das Verhalten nach Aktivierung der semantischen Hervorhebung und rechts das Verhalten nur mit Syntaxhervorhebung.

Weitere Details zur semantischen Hervorhebung für Java finden Sie im Wiki der Java Language Support-Erweiterung.
Mit Spring Boot durch Code navigieren
Die Spring Boot Tools-Erweiterung bietet erweiterte Navigations- und Code-Vervollständigungsunterstützung für Spring Boot-Projekte.
@/zeigt alle definierten Request-Mappings an (zugeordneter Pfad, Request-Methode, Quellort)@+zeigt alle definierten Beans an (Bean-Name, Bean-Typ, Quellort)@>zeigt alle Funktionen an (Prototyp-Implementierung)@zeigt alle Spring-Annotationen im Code an

Um mehr über die Unterstützung von Spring Boot mit Visual Studio Code zu erfahren, lesen Sie Spring Boot in Visual Studio Code.
Codebearbeitung
Das Bearbeiten von Code ist auch mit IntelliSense für intelligente Code-Vervollständigungen und Signaturdetails einfach. Sie können Code-Schnipsel sowie verschiedene Code-Aktionen wie das Generieren von Gettern/Settern und das Organisieren von Importen verwenden, um Ihre Produktivität weiter zu steigern.
Die Java-Unterstützung in Visual Studio Code erkennt automatisch Probleme in Ihrem Code und bietet Ihnen Vorschläge für "Schnelle Korrekturen".
Weitere Details zu Refactoring und Code-Aktionen finden Sie unter Refactoring und Quellcode-Aktionen.
IntelliSense
Die Code-Vervollständigung in Visual Studio Code für Java wird von Language Support for Java™ by Red Hat bereitgestellt. Die Erweiterung wird von denselben Java Development Tools (JDT) wie Eclipse angetrieben, sodass Sie das gleiche Maß an Unterstützung erwarten können.
Darüber hinaus gibt es auch eine KI-gestützte IntelliSense namens IntelliCode. Sie spart Ihnen Zeit, indem sie die Elemente, die Sie am wahrscheinlichsten verwenden werden, an den Anfang Ihrer Vervollständigungsliste stellt. IntelliCode-Empfehlungen basieren auf Tausenden von Open-Source-Projekten auf GitHub, die jeweils über 100 Sterne haben, sodass sie auf den gängigsten Verwendungen aus hochwertigen Projekten trainiert sind. In Kombination mit dem Kontext Ihres Codes wird die Vervollständigungsliste angepasst, um diese Praktiken zu fördern. Hier ist IntelliCode für Java in Aktion.
IntelliCode funktioniert gut mit beliebten Java-Bibliotheken und Frameworks wie Java SE und Spring. Es hilft Ihnen, egal ob Sie monolithische Webanwendungen oder moderne Microservices entwickeln.
Neue Datei erstellen
VS Code unterstützt die Anwendung von Vorlagen beim Erstellen einer Java-Quelldatei. Wenn Sie eine .java-Datei im Datei-Explorer erstellen, generiert der Sprachserver automatisch den Klassenrumpf und füllt die Paketinformationen für Sie aus.
Code-Schnipsel
Visual Studio Code unterstützt eine Vielzahl beliebter Java-Code-Schnipsel, um Sie produktiver zu machen, wie z.B. Klasse/Schnittstelle, syserr, sysout, if/else, try/catch, statische main-Methode. Anhand von Informationen des Java-Sprachservers wird während der Auswahl eine Vorschau des Code-Schnipsels angezeigt.
Wenn Sie beispielsweise "sout" oder "sysout" eingeben, wird ein Code-Schnipsel für System.out.println() generiert.
Ähnlich erzeugt die Eingabe von "main" oder "psvm" einen Code-Schnipsel für public static void main(String[] args) {}.

Die vollständige Liste der Verknüpfungen finden Sie unten.
Code-Schnipsel-Verknüpfungen
| Verknüpfungsschlüssel | Beschreibung |
|---|---|
| ctor | Öffentlicher Konstruktor |
| dowhile | Do-while-Anweisung |
| foreach, iter | Iteration über ein Array oder Iterable |
| fori | Iteration über ein Array |
| if | If-Anweisung |
| ifelse | If-Else-Anweisung |
| ifnull | If-Anweisung, die auf null prüft |
| ifnotnull | If-Anweisung, die auf nicht null prüft |
| main, psvm | Öffentliche statische Main-Methode |
| new | Neues Objekt erstellen |
| private_method | Private Methode |
| private_static_method | Private statische Methode |
| prf | Privates Feld |
| protected_method | Geschützte Methode |
| public_method | Öffentliche Methode |
| public_static_method | Öffentliche statische Methode |
| switch | Switch-Anweisung |
| syserr, serr | Ausgabe auf Standard-Fehlerstrom |
| sysout, sout | Ausgabe auf Standard-Ausgabestrom |
| systrace, soutm | Aktuelle Methode auf Standard-Ausgabestrom ausgeben |
| try_catch | Try/catch-Block |
| try_resources | Try-with-resources-Anweisung |
| while | While-Anweisung |
Postfix-Schnipsel-Verknüpfungen
| Verknüpfungsschlüssel | Vorlageninhalt | Beschreibung |
|---|---|---|
| cast | ((SomeType) expr) | Konvertiert den Ausdruck in einen neuen Typ |
| else | if (!expr) | Erstellt eine negierte if-Anweisung |
| for | for (T item : expr) | Erstellt eine for-Anweisung |
| fori | for (int i = 0; i < expr.length; i++) | Erstellt eine for-Anweisung, die über ein Array iteriert |
| forr | for (int i = expr.length-1; i >= 0; i--) | Erstellt eine for-Anweisung, die über ein Array in umgekehrter Reihenfolge iteriert |
| if | if (expr) | Erstellt eine if-Anweisung |
| nnull | if (expr != null) | Erstellt eine if-Anweisung und prüft, ob der Ausdruck nicht null ergibt |
| null | if (expr == null) | Erstellt eine if-Anweisung, die prüft, ob der Ausdruck null ergibt |
| sysout | System.out.println(expr) | Sendet den betroffenen String an einen System.out.println(..)-Aufruf |
| throw | throw expr | Wirft die angegebene Ausnahme |
| var | T name = expr | Erstellt eine neue Variable |
| while | while (expr) {} | Erstellt eine while-Schleife |