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) を押します。または、コンテキスト メニューから [定義をここに表示] を選択することもできます (右クリックして [定義をここに表示] を選択)。
定義へ移動
[定義へ移動] 機能を使用して、シンボルが定義されている場所にすばやく移動することもできます。
シンボルの定義に移動するには、ソース コード内で使用されている場所のシンボルにカーソルを置き、F12 を押します。または、コンテキスト メニューから [定義へ移動] を選択することもできます (右クリックして [定義へ移動] を選択)。シンボルの定義が 1 つしかない場合は、その場所に直接移動します。それ以外の場合は、前のセクションで説明したように、競合する定義がプレビュー ウィンドウに表示され、移動したい定義を選択する必要があります。
スーパー実装に移動
ホバー時に [Go to Super Implementation] リンクをクリックすることで、クラスの実装とオーバーライドするメソッドを追跡できます。
呼び出し階層
呼び出し階層ビューは、関数からのすべての呼び出し、または関数へのすべての呼び出しを表示し、呼び出し元の呼び出し元や呼び出し先の呼び出し先をドリルダウンできます。関数を右クリックし、[ここに表示] > [呼び出し階層をここに表示] を選択します。
関数本体で右クリックして [呼び出し階層の表示] を選択することもできます。
型階層
型階層ビューは、Java オブジェクト間の継承関係を表示します。型を右クリックして [型階層の表示] を選択できます。
折りたたみ領域
折りたたみ領域を使用すると、コード スニペットを折りたたんだり展開したりして、ソース コードを見やすくすることができます。
スマート選択
スマート選択 (セマンティック選択) を使用すると、ソース コード内のカーソル位置のセマンティック情報に基づいて選択範囲を拡大または縮小できます。
- 選択範囲を拡大するには、⌃⇧⌘→ (Windows、Linux では Shift+Alt+Right) を使用します。
- 選択範囲を縮小するには、⌃⇧⌘← (Windows、Linux では Shift+Alt+Left) を使用します。
セマンティック ハイライト
シンタックス ハイライトは、コードをより効率的に読むことができるようにする重要な機能です。セマンティック ハイライトの助けを借りて、VS Code は Java 言語サービスからのシンボル情報に基づいて、より正確なソース コードのカラーリングを提供できます。
以下はその一例です。左はセマンティック ハイライトを有効にした後の動作、右はシンタックス ハイライトのみの場合の動作です。
Java のセマンティック ハイライトの詳細については、Java Language Support 拡張機能の Wiki を参照してください。
Spring Boot を使用したコードのナビゲート
Spring Boot Tools 拡張機能は、Spring Boot プロジェクトの拡張されたナビゲーションとコード補完サポートを提供します。
@/
は定義されているすべてのリクエスト マッピングを表示します (マップされたパス、リクエスト メソッド、ソースの場所)@+
は定義されているすべての Bean を表示します (Bean 名、Bean タイプ、ソースの場所)@>
はすべての関数を表示します (プロトタイプ実装)@
はコード内のすべての Spring アノテーションを表示します
Visual Studio Code での Spring Boot サポートの詳細については、Visual Studio Code での Spring Boot をお読みください。
コード編集
スマートなコード補完とシグネチャの詳細のための IntelliSense を使用して、コードの編集も簡単です。コード スニペットや、ゲッター/セッターの生成やインポートの整理などのさまざまなコード アクションを使用して、生産性をさらに向上させることができます。
Visual Studio Code の Java サポートは、コード内の問題を自動的に検出し、クイック修正の提案を提供します。
リファクタリングとコード アクションの詳細については、リファクタリングとソース アクション を参照してください。
IntelliSense
Visual Studio Code for Java のコード補完は、Language Support for Java™ by Red Hat によって提供されます。この拡張機能は、Eclipse の背後にあるのと同じ Java 開発ツール (JDT) を利用しているため、同レベルのサポートが期待できます。
さらに、IntelliCode と呼ばれる AI 支援の IntelliSense もあります。最も使用する可能性が高いものを補完リストの先頭に表示することで、時間を節約します。IntelliCode の推奨事項は、それぞれ 100 以上のスターが付いた GitHub 上の何千ものオープンソース プロジェクトに基づいているため、高品質のプロジェクトからの最も一般的な使用法でトレーニングされています。コードのコンテキストと組み合わせることで、補完リストはそれらのプラクティスを促進するように調整されます。以下は、Java での IntelliCode の動作です。
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 | not null をチェックする if ステートメント |
main, psvm | public static main メソッド |
new | 新しいオブジェクトを作成する |
private_method | private メソッド |
private_static_method | private static メソッド |
prf | private フィールド |
protected_method | protected メソッド |
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 ステートメント |
ポストフィックス スニペット ショートカット
ショートカットキー | テンプレート コンテンツ | 説明 |
---|---|---|
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) | 式が null に解決されるかどうかをチェックする if ステートメントを作成します |
sysout | System.out.println(expr) | 影響を受ける文字列を System.out.println(..) 呼び出しに送信します |
throw | throw expr | 指定された例外をスローします |
var | T name = expr | 新しい変数を作成します |
while | while (expr) {} | while ループを作成します |