Entdecken Sie agentenbasierte Entwicklung –

Java-Quellcode navigieren und bearbeiten

Visual Studio Code ist in erster Linie ein Quellcode-Editor mit umfangreichen Bearbeitungsfunktionen. In diesem Dokument gehen wir auf einige Java-spezifische Funktionen ein, 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 (Outline) können Sie bequem durch die Member innerhalb der aktuellen Datei navigieren. Die Projektansicht bietet zudem einen großartigen Überblick über Ihr Projekt. Als Java-Editor unterstützt er außerdem Aufrufhierarchien, Typenhierarchien, Definitionsnavigation, die Suche nach Typen im Arbeitsbereich usw.

Nach Symbolen suchen

Sie können nach Symbolen in der aktuellen Datei oder im Arbeitsbereich suchen, um schneller durch Ihren Code zu navigieren.

Nach Symbolen im Arbeitsbereich suchen

Um nach einem Symbol im aktuellen Arbeitsbereich zu suchen, drücken Sie zunächst ⌘T (Windows, Linux Ctrl+T) und geben dann den Namen des Symbols ein. Wie zuvor erscheint eine Liste potenzieller Treffer. Wenn Sie einen Treffer auswählen, der sich in einer noch nicht geöffneten Datei befindet, wird die Datei geöffnet, bevor zur Position des Treffers navigiert wird. Alternativ können Sie auch die Schnellöffnung (⌘P (Windows, Linux Ctrl+P)) verwenden und dann den Befehl '#' eingeben, um den aktuellen Arbeitsbereich zu durchsuchen. ⌘T (Windows, Linux Ctrl+T) ist lediglich die Tastenkombination für den '#'-Befehl; die Funktionsweise ist identisch.

Nach Symbolen in der aktuellen Datei suchen

Um nach einem Symbol in der aktuellen Datei zu suchen, verwenden Sie die Schnellöffnung (⌘P (Windows, Linux Ctrl+P)), geben den Befehl '@' und anschließend den Namen des gesuchten Symbols ein. Eine Liste potenzieller Treffer erscheint und wird während der Eingabe gefiltert. Wählen Sie aus der Liste der Treffer aus, um zu deren Position zu navigieren.

Definition anzeigen

Sie können sich mit der Funktion "Definition einsehen" (Peek Definition) einen schnellen Überblick darüber verschaffen, wie ein Symbol definiert wurde. Diese Funktion zeigt einige Zeilen Code nahe der Definition in einem kleinen Fenster an, sodass Sie einen Blick darauf werfen können, ohne Ihren aktuellen Standort im Code zu verlassen.

Um eine Symboldefinition einzusehen, platzieren Sie den Cursor auf dem Symbol an einer beliebigen Stelle, an der es in Ihrem Quellcode verwendet wird, und drücken Sie ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10). Alternativ können Sie im Kontextmenü (Rechtsklick) Peek Definition (Definition einsehen) wählen.

Zur Definition springen

Sie können auch schnell zu der Stelle navigieren, an der ein Symbol definiert ist, indem Sie die Funktion "Zu Definition springen" (Go to Definition) verwenden.

Um zur Definition eines Symbols zu springen, platzieren Sie den Cursor auf dem Symbol und drücken Sie F12. Alternativ können Sie im Kontextmenü Go to Definition (Zu Definition springen) wählen. Wenn es nur eine Definition des Symbols gibt, navigieren Sie direkt zu dieser Position; andernfalls werden die konkurrierenden Definitionen in einem Fenster angezeigt, wie im vorherigen Abschnitt beschrieben, und Sie müssen die gewünschte Definition auswählen.

Zur Super-Implementierung springen

Sie können den Überblick über Klassenimplementierungen und überschreibende Methoden behalten, indem Sie beim Drüberfahren (Hover) auf den Link Go to Super Implementation klicken.

Spring Navigation

Aufrufhierarchie

Die Ansicht "Aufrufhierarchie" zeigt alle Aufrufe von oder zu einer Funktion und ermöglicht es Ihnen, tief in die Aufrufer der Aufrufer einzutauchen. Rechtsklicken Sie auf eine Funktion und wählen Sie Peek > Peek Call Hierarchy.

Call Hierarchy Peek

Sie können auch mit der rechten Maustaste in einen Funktionskörper klicken und Show Call Hierarchy auswählen.

Call Hierarchy Menu

Typenhierarchie

Die Ansicht "Typenhierarchie" zeigt die Vererbungsbeziehungen zwischen Java-Objekten. Sie können mit der rechten Maustaste auf einen Typ klicken und Show Type Hierarchy wählen.

Codebereiche falten

Mit faltbaren Bereichen können Sie Codeausschnitte ein- oder ausblenden, um den Quellcode besser zu lesen.

Smarte Auswahl

Mit der Smart Selection (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).

Semantisches Hervorheben

Syntaxhervorhebung ist eine wichtige Funktion, die es Ihnen ermöglicht, Code effizienter zu lesen. Mit Hilfe von semantischem Hervorheben kann VS Code eine genauere Farbgebung des Quellcodes basierend auf Symbolinformationen des Java-Sprachdienstes bereitstellen.

Unten sehen Sie nur ein Beispiel: Links ist das Verhalten nach der Aktivierung des semantischen Hervorhebens, rechts dasjenige mit nur Syntaxhervorhebung.

Semantic Highlighting

Weitere Details zum semantischen Java-Hervorheben finden Sie im Wiki der Java Language Support-Erweiterung.

Code-Navigation mit Spring Boot

Die Erweiterung Spring Boot Tools bietet verbesserte Navigation und Unterstützung bei der Codevervollständigung für Spring Boot-Projekte.

  • @/ zeigt alle definierten Request-Mappings (zugeordneter Pfad, Request-Methode, Quellort)
  • @+ zeigt alle definierten Beans (Bean-Name, Bean-Typ, Quellort)
  • @> zeigt alle Funktionen (Prototyp-Implementierung)
  • @ zeigt alle Spring-Annotationen im Code

Spring Navigation

Um mehr über die Spring Boot-Unterstützung in Visual Studio Code zu erfahren, lesen Sie Spring Boot in Visual Studio Code.

Code bearbeiten

Das Bearbeiten von Code ist dank IntelliSense für smarte Codevervollständigungen und Signaturdetails ebenfalls einfach. Sie können Code-Snippets sowie verschiedene Code-Aktionen verwenden, wie etwa das Generieren von Gettern/Settern und das Organisieren von Imports, um Ihre Produktivität weiter zu steigern.

Die Java-Unterstützung in Visual Studio Code erkennt Probleme innerhalb Ihres Codes automatisch und bietet Ihnen Vorschläge für Schnellkorrekturen (Quick Fixes).

Weitere Details zum Refactoring und zu Code-Aktionen finden Sie unter Refactoring und Quellcode-Aktionen.

IntelliSense

Die Codevervollständigung für Java in Visual Studio Code wird bereitgestellt durch Language Support for Java™ by Red Hat. Die Erweiterung basiert auf denselben Java Development Tools (JDT), die auch Eclipse zugrunde liegen, sodass Sie dasselbe Unterstützungsniveau erwarten können.

Darüber hinaus gibt es ein KI-gestütztes IntelliSense namens IntelliCode. Es spart Ihnen Zeit, indem es die Elemente, die Sie am wahrscheinlichsten verwenden werden, ganz oben in Ihre Vervollständigungsliste setzt. Die Empfehlungen von IntelliCode basieren auf Tausenden von Open-Source-Projekten auf GitHub mit jeweils über 100 Sternen und wurden somit auf den häufigsten Nutzungen aus qualitativ hochwertigen Projekten trainiert. In Kombination mit dem Kontext Ihres Codes ist die Vervollständigungsliste darauf zugeschnitten, 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 Web-Apps 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 Klassenkörper und füllt die Paketinformationen für Sie aus.

Code-Schnipsel

Visual Studio Code unterstützt eine breite Palette beliebter Java-Code-Snippets, um Ihre Produktivität zu steigern, wie z. B. class/interface, syserr, sysout, if/else, try/catch, static main method. Unter Verwendung von Informationen des Java-Sprachservers bietet es auch eine Vorschau des Code-Snippets während der Auswahl.

Zum Beispiel erzeugt die Eingabe von "sout" oder "sysout" ein Code-Snippet für System.out.println().
Ähnlich erzeugt die Eingabe von "main" oder "psvm" ein Code-Snippet für public static void main(String[] args) {}.

Code Snippet

Die vollständige Liste der Tastenkürzel finden Sie unten

Tastenkürzel für Code-Snippets

Tastenkürzel Beschreibung
ctor Öffentlicher Konstruktor
dowhile Do-while-Anweisung
foreach, iter Über ein Array oder Iterable iterieren
fori Über ein Array iterieren
if If-Anweisung
ifelse If-else-Anweisung
ifnull If-Anweisung mit Prüfung auf null
ifnotnull If-Anweisung mit Prüfung auf nicht null
main, psvm Public static main-Methode
new Neues Objekt erstellen
private_method Private Methode
private_static_method Private statische Methode
prf Privates Feld
protected_method Protected-Methode
public_method Öffentliche Methode
public_static_method Öffentliche statische Methode
switch Switch-Anweisung
syserr, serr Ausgabe auf Standard-Err
sysout, sout Ausgabe auf Standard-Out
systrace, soutm Aktuelle Methode auf Standard-Out ausgeben
try_catch Try/catch-Block
try_resources Try-with-resources-Anweisung
while While-Anweisung

Tastenkürzel für Postfix-Snippets

Tastenkürzel Vorlageninhalt Beschreibung
cast ((SomeType) expr) Castet 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 in umgekehrter Reihenfolge über ein Array iteriert
if if (expr) Erstellt eine If-Anweisung
nnull if (expr != null) Erstellt eine If-Anweisung und prüft, ob der Ausdruck nicht null ist
null if (expr == null) Erstellt eine If-Anweisung, die prüft, ob der Ausdruck null ist
sysout System.out.println(expr) Sendet den betroffenen String an einen System.out.println(..)-Aufruf
throw throw expr Wirft die angegebene Exception
var T name = expr Erstellt eine neue Variable
while while (expr) {} Erstellt eine while-Schleife
© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.