Javaソースコードを操作および編集する
Visual Studio Code は、豊富な編集機能を備えた、まさにソースコードエディターです。このドキュメントでは、Java の作業に役立ついくつかの Java 固有の機能について説明します。
以下の機能の使用中に問題が発生した場合は、イシューを登録してご連絡ください。
コード ナビゲーション
アウトライン ビューを使用すると、現在のファイル内のメンバーを簡単にナビゲートできます。プロジェクト ビューもプロジェクトの概要を把握するのに役立ちます。Java エディターとして、呼び出し階層、型階層、定義ナビゲーション、ワークスペース内の型の検索などもサポートしています。
シンボルの検索
現在のファイルまたはワークスペースでシンボルを検索して、コードをより迅速に操作できます。
ワークスペース内のシンボルの検索
現在のワークスペースでシンボルを検索するには、まず ⌘T (Windows、Linux Ctrl+T) を押してから、シンボルの名前を入力します。以前と同様に、一致する可能性のあるリストが表示されます。まだ開いていないファイルで見つかった一致を選択した場合、その一致の場所に移動する前にファイルが開かれます。または、クイック オープン (⌘P (Windows、Linux Ctrl+P)) を使用して「#」コマンドを入力し、現在のワークスペースを検索することもできます。⌘T (Windows、Linux Ctrl+T) は「#」コマンドのショートカットにすぎないため、すべて同じように機能します。
現在のファイル内のシンボルの検索
現在のファイルでシンボルを検索するには、クイック オープン (⌘P (Windows、Linux Ctrl+P)) を使用して「@」コマンドを入力し、検索しているシンボルの名前を入力します。入力中に一致する可能性のあるリストが表示され、絞り込まれます。一致するリストから選択して、その場所に移動します。
定義をピーク
ピーク定義機能を使用すると、シンボルがどのように定義されているかをすばやく確認できます。この機能は、ピーク ウィンドウ内に定義近くの数行のコードを表示するため、現在の場所から移動することなく確認できます。
シンボルの定義をピーク表示するには、ソースコード内のシンボルが使用されている場所にカーソルを置き、⌥F12 (Windows Alt+F12、Linux Ctrl+Shift+F10) を押します。または、コンテキスト メニューからピーク定義を選択することもできます (右クリックしてピーク定義を選択)。
定義へ移動
Go to Definition 機能を使用すると、シンボルが定義されている場所にすばやく移動することもできます。
シンボルの定義に移動するには、ソースコード内のシンボルが使用されている場所にカーソルを置き、F12 を押します。または、コンテキスト メニューから定義へ移動を選択することもできます (右クリックして定義へ移動を選択)。シンボルの定義が 1 つしかない場合は、その場所に直接移動します。それ以外の場合は、前のセクションで説明したように、競合する定義がピーク ウィンドウに表示され、移動したい定義を選択する必要があります。
スーパークラス実装へ移動
ホバー時にスーパークラス実装へ移動リンクをクリックすると、クラスの実装とオーバーライドされたメソッドを追跡できます。
呼び出し階層
呼び出し階層ビューには、関数からの、または関数へのすべての呼び出しが表示され、呼び出し元の呼び出し元や呼び出しの呼び出し元を掘り下げることができます。関数を右クリックし、ピーク > ピーク呼び出し階層を選択します。
関数本体を右クリックして、呼び出し階層の表示を選択することもできます。
型階層
型階層ビューには、Java オブジェクト間の継承関係が表示されます。型を右クリックして、型階層の表示を選択できます。
領域の折りたたみ
領域の折りたたみを使用すると、コード スニペットを折りたたんだり展開したりして、ソースコードをより見やすくすることができます。
スマート選択
スマート選択 (セマンティック選択) を使用すると、ソースコード内のキャレット位置のセマンティック情報に基づいて、選択範囲を拡大または縮小できます。
- 選択範囲を拡大するには、⌃⇧⌘→ (Windows、Linux Shift+Alt+Right) を使用します。
- 選択範囲を縮小するには、⌃⇧⌘← (Windows、Linux Shift+Alt+Left) を使用します。
セマンティックハイライト
構文ハイライトは、コードをより効率的に読み取ることを可能にする重要な機能です。セマンティックハイライトの助けを借りて、VS Code は Java 言語サービスからのシンボル情報に基づいて、より正確なソースコードの色付けを提供できます。
以下は一例で、左はセマンティックハイライトを有効にした後の動作、右は構文ハイライトのみの場合の動作です。
Java セマンティックハイライトの詳細については、Java 言語サポート拡張機能の Wiki で詳しく学ぶことができます。
Spring Boot を使用したコードの操作
Spring Boot Tools 拡張機能は、Spring Boot プロジェクトに対する拡張されたナビゲーションとコード補完のサポートを提供します。
@/
は、定義されているすべての要求マッピング (マッピングされたパス、要求メソッド、ソースの場所) を表示します。@+
は、定義されているすべての Bean (Bean 名、Bean の型、ソースの場所) を表示します。@>
は、すべての関数 (プロトタイプ実装) を表示します。@
は、コード内のすべての Spring アノテーションを表示します。
Visual Studio Code での Spring Boot のサポートについて詳しくは、Visual Studio Code の Spring Boot をお読みください。
コードの編集
IntelliSense を使用すると、スマートなコード補完やシグネチャの詳細により、コードの編集も簡単です。Getters/Setters の生成やインポートの整理など、さまざまなコード アクションだけでなく、コード スニペットも使用して、生産性をさらに向上させることができます。
Visual Studio Code の Java サポートは、コード内の問題を自動的に検出し、クイック フィックスの提案を提供します。
リファクタリングとコード アクションの詳細については、リファクタリングとソース アクションを参照してください。
IntelliSense
Visual Studio Code の Java コード補完は、Red Hat による Java™ 言語サポートによって提供されます。この拡張機能は、Eclipse の背後にある同じJava 開発ツール (JDT) を利用しているため、同じレベルのサポートが期待できます。
さらに、AI 支援の IntelliSense であるIntelliCode もあります。これは、最も使用する可能性のあるものを補完リストの最上部に配置することで、時間を節約します。IntelliCode の推奨事項は、それぞれ 100 を超えるスターを持つ GitHub 上の何千ものオープンソース プロジェクトに基づいているため、高品質なプロジェクトの最も一般的な使用法でトレーニングされています。コードのコンテキストと組み合わせることで、補完リストはそれらのプラクティスを促進するように調整されます。IntelliCode for Java の動作を次に示します。
IntelliCode は、Java SE や Spring などの一般的な Java ライブラリやフレームワークでうまく機能します。モノリシックな Web アプリを開発している場合でも、最新のマイクロサービスを開発している場合でも役立ちます。
新しいファイルの作成
VS Code は、Java ソースファイルを作成する際にテンプレートの適用をサポートしています。ファイル エクスプローラーで .java
ファイルを作成すると、言語サーバーはクラス本体を自動的に生成し、パッケージ情報を入力します。
コードスニペット
Visual Studio Code は、クラス/インターフェース、syserr、sysout、if/else、try/catch、static main メソッドなど、さまざまな人気のある Java コード スニペットをサポートしており、生産性を向上させることができます。Java 言語サーバーからの情報を使用して、選択中にコード スニペットのプレビューも提供します。
たとえば、「sout」または「sysout」と入力すると、System.out.println()
のコード スニペットが生成されます。
同様に、「main」または「psvm」と入力すると、public static void main(String[] args) {}
のコード スニペットが生成されます。
ショートカットの完全なリストを以下に示します。
コード スニペットのショートカット
ショートカット キー | 説明 |
---|---|
ctor | Public コンストラクター |
dowhile | Do-while ステートメント |
foreach, iter | 配列または Iterable を反復処理する |
fori | 配列を反復処理する |
if | If ステートメント |
ifelse | If-else ステートメント |
ifnull | null をチェックする If ステートメント |
ifnotnull | null ではないことをチェックする If ステートメント |
main, psvm | Public static main メソッド |
new | 新しいオブジェクトを作成する |
private_method | プライベート メソッド |
private_static_method | プライベート static メソッド |
prf | プライベート フィールド |
protected_method | プロテクト メソッド |
public_method | Public メソッド |
public_static_method | Public static メソッド |
switch | Switch ステートメント |
syserr, serr | 標準エラーに出力する |
sysout, sout | 標準出力に出力する |
systrace, soutm | 現在のメソッドを標準出力に出力する |
try_catch | Try/catch ブロック |
try_resources | Try-with-resources ステートメント |
while | While ステートメント |
Postfix スニペットのショートカット
ショートカット キー | テンプレートの内容 | 説明 |
---|---|---|
cast | ((SomeType) expr) | 式を新しい型にキャストする |
else | if (!expr) | 否定された if ステートメントを作成する |
for | for (T item : expr) | for ステートメントを作成する |
fori | for (int i = 0; i < expr.length; i++) | 配列を反復処理する for ステートメントを作成する |
forr | for (int i = expr.length-1; i >= 0; i--) | 配列を逆順に反復処理する for ステートメントを作成する |
if | if (expr) | if ステートメントを作成する |
nnull | if (expr != null) | if ステートメントを作成し、式が null に解決されないことをチェックする |
null | if (expr == null) | if ステートメントを作成し、式が null に解決されることをチェックする |
sysout | System.out.println(expr) | 影響を受ける文字列を System.out.println(..) 呼び出しに送信する |
throw | throw expr | 指定された例外をスローする |
var | T name = expr | 新しい変数を作成する |
while | while (expr) {} | while ループを作成する |