IntelliJ IDEA 2026.1 Help

アノテーション

アノテーションは、クラス、メソッド、パラメーターなどのコード要素に関する情報を提供するメタデータの一部です。

@Override public String toString() { return String.valueOf(id); }

Java には、一連の組み込みアノテーションがあります。 また、Spring や Lombok などの多くのライブラリやフレームワークは、独自のアノテーションを定義しています。 これらのアノテーションによって提供されるメタデータは、コンパイル時と実行時の両方で使用でき、たとえば定型コードを生成したり、リフレクションを通じてユーザークラスと対話したりできます。

コード契約アノテーション

コードのセマンティクスと契約を記述するアノテーションのクラスもあります。 開発者はこれらを使用して、特定の API を使用することの意味をよりよく理解し、静的アナライザーが問題のある領域を特定するのを支援できます。

public @Nullable List<Double> getDiscounts() { return discounts; }

IntelliJ IDEA は一般的な Java アノテーションを認識し、コードを分析する際に考慮します。 このようなアノテーションフレームワークの例は、 チェッカーフレームワーク(英語)および ErrorProne(英語) です。

JetBrains' @Contract アノテーションの詳細については、 公式リポジトリ(英語)を参照してください。

Null 可能性アノテーション

Nullability アノテーションは、コード契約アノテーションのサブセットです。 要素の null 可能性を明示的に宣言することで、コードの保守が容易になり、null 可能性に関連するエラーが発生しにくくなります。

一方、IntelliJ IDEAの静的解析は、設計時にこれらのアノテーションを使用して潜在的なエラーをキャッチします。 たとえば、IntelliJ IDEAはプロジェクトのデータフローを分析し、変数が null であるとデリファレースしようとしている試みを報告したり、逆に安全に削除できる冗長なガード条件を削除することを提案します。

Nullabilityアノテーションの設定

IntelliJ IDEA は一般的な nullability アノテーションを認識しますが、カスタムアノテーションをリストに追加することもできます。 IntelliJ IDEA は、シンボルの nullability を決定するために使用します。

  1. 設定 | エディター | インスペクション | 潜在的なバグ | null 許容性とデータフローの問題 に移動します。

  2. オプション で、 アノテーションの構成 を選択します。

デフォルトの nullability アノテーション

デフォルトでは、次のアノテーションが IntelliJ IDEA によって認識されます。

  • android.support.annotation.Nullable

  • androidx.annotation.Nullable

  • androidx.annotation.RecentlyNullable

  • com.android.annotations.Nullable

  • edu.umd.cs.findbugs.annotations.Nullable

  • io.reactivex.annotations.Nullable

  • io.reactivex.rxjava3.annotations.Nullable

  • jakarta.annotation.Nullable

  • javax.annotation.CheckForNull

  • javax.annotation.Nullable

  • org.checkerframework.checker.nullness.compatqual.NullableDecl

  • org.checkerframework.checker.nullness.compatqual.NullableType

  • org.checkerframework.checker.nullness.qual.Nullable

  • org.eclipse.jdt.annotation.Nullable

  • org.jetbrains.annotations.Nullable

  • org.jspecify.annotations.Nullable

  • android.support.annotation.NonNull

  • androidx.annotation.NonNull

  • androidx.annotation.RecentlyNonNull

  • com.android.annotations.NonNull

  • edu.umd.cs.findbugs.annotations.NonNull

  • io.reactivex.annotations.NonNull

  • io.reactivex.rxjava3.annotations.NonNull

  • jakarta.annotation.Nonnull

  • javax.annotation.Nonnull

  • lombok.NonNull

  • org.checkerframework.checker.nullness.compatqual.NonNullDecl

  • org.checkerframework.checker.nullness.compatqual.NonNullType

  • org.checkerframework.checker.nullness.qual.NonNull

  • org.eclipse.jdt.annotation.NonNull

  • org.jetbrains.annotations.NotNull

  • org.jspecify.annotations.NonNull

null 可能性アサーションを無効にする

IntelliJ IDEA ビルドツールでプロジェクトをコンパイルすると、IDE は @NotNull アノテーションが付けられたすべてのコード要素にアサーションを追加します。 これらのアサーションは、実行時に要素が null である場合にエラーをスローします。 このフェイルファスト動作は、問題を早期に診断できます。 この効果が望ましくない場合は、これらのアサーションを無効にすることができます。

  • 設定 Ctrl+Alt+S | ビルド、実行、デプロイ | コンパイラー に移動し、 @NotNull メソッドやパラメーターに対して実行時アサーションを追加 オプションのチェックを外します。

null の推測

プロジェクトに null 可能性アノテーションが完全または部分的に欠落している場合、IntelliJ IDEA で null 可能性アノテーションを推測して挿入することができます。

  1. アノテーション付きのライブラリがプロジェクト用に構成されていることを確認してください。 IntelliJ IDEA は、 設定 | エディター | インスペクション | 潜在的なバグ | null 許容性とデータフローの問題 | アノテーションの構成コード生成に使用されるアノテーション で指定されたアノテーションを使用します。

  2. メインメニューで コード | コードの解析 | null 可能性の推論 へ移動します。

  3. 推論無効範囲を指定する ダイアログで、分析の範囲を選択します。 テストソースを含めたり、ローカル変数にアノテーションを付けたりする場合は、対応するチェックボックスを選択します。

JetBrainsアノテーションの依存関係

IntelliJ IDEA には、別の依存関係として利用できる独自のアノテーションセットがあります。 null 可能性、範囲、契約、可変性、純度などを表現するためのアノテーションが含まれています。

パッケージは、数十のアノテーションで構成されています。 最も一般的なもののいくつかは次のとおりです。

  • @Nullable および @NotNull – null にできる、またはできない変数、パラメーター、戻り値を示します。

  • @Nls – アノテーション付きコード要素がローカライズする必要がある文字列であることを示します。

  • @NonNls – アノテーション付きコード要素が、ユーザーには表示されず、ローカライズを必要とせず、ローカライズを必要とする文字列を含まない文字列であることを示します。 要素に @NonNls のアノテーションを付けると、ローカライゼーションツールはこの要素とその中の文字列をスキップします。

  • @PropertyKey – メソッドパラメーターが、特定のリソースバンドル内の有効なプロパティキーである必要がある引数を受け入れることを示します。 バンドル内のプロパティキーではない文字列リテラルがパラメーターとして渡されると、IntelliJ IDEA はそれをエラーとしてハイライトします。 アノテーションは、パラメーターとして渡される文字列リテラルで補完を提供するためにも使用されます。

  • @TestOnly – メソッドまたはコンストラクターをテストコードからのみ呼び出す必要があることを示します。

  • @Contract – メソッドが従わなければならない一連の規則 (契約) を指定できます。 契約に違反した場合、IntelliJ IDEA は問題を報告します。

  • @Language – 別の言語で書かれたコードを Java 文字列に挿入します。

プロジェクトにJetBrainsアノテーション依存関係を追加

  • コードで JetBrains アノテーションを使用する場合、 クラスパスに「アノテーション」を追加する インテンションアクションは、必要な依存関係をすばやく追加できます。

    プロジェクトに JetBrains Annotations 依存関係を追加中です。
  • それ以外の場合は、次のアーティファクト座標を使用して手動で追加できます: https://central.sonatype.com/artifact/org.jetbrains/annotations/24.0.1

    <dependencies> <dependency> <groupId>org.jetbrains</groupId> <artifactId>annotations</artifactId> <version>26.0.2</version> <scope>provided</scope> </dependency> </dependencies>
    dependencies { compileOnly 'org.jetbrains:annotations:26.0.2' }
    dependencies { compileOnly("org.jetbrains:annotations:26.0.2") }

    プロジェクト構造 Ctrl+Alt+Shift+S |ライブラリ に移動します。 をクリックし、 Maven から を選択します。 検索フィールドに org.jetbrains:annotations:26.0.2 と入力します。 OK をクリックします。

推論されたアノテーション

コードにまったくアノテーションが付けられていない場合でも、IntelliJ IDEA はバイトコードとソースから多くのアノテーションを推測できます。 これらのアノテーションはコードに物理的に挿入されるわけではありませんが、IDE では、コードの連絡先をよりよく理解できるように配置されているかのように表示されます。 推測されたアノテーションは、通常のアノテーションと同様にコード分析にも使用されます。

IntelliJ IDEA は次の JetBrains アノテーション を推論できます: @Nullable@NotNull@Contract@Unmodifiable 、および @UnmodifiableView。 これらのアノテーションのフレーバーについての完全なドキュメントは、 パッケージのソースコードを参照してください。

エディターでは、推測されたアノテーションは、ガターの Inferred annotation icon アイコンでマークされます。

エディターで推測されるアノテーション

コードに推測されたアノテーションを追加

  • 推測されたアノテーションをコードに物理的に挿入する場合は、目的のアノテーションの近くにある Inferred annotation icon をクリックしてから、 挿入 を選択します。

    推測されたアノテーションをコードに追加中です。

インラインで推測されたアノテーションを表示

コード内に推論されたアノテーションを表示するように IDE を設定できます。

推測されたアノテーションを含むインレイヒント
  1. Ctrl+Alt+S を押して設定を開き、 エディター | インレイヒント | アノテーション | Java を選択します。

  2. 推論されたアノテーション のチェックボックスを選択します。

外部アノテーション

アノテーションを明示的に使用したいが、コードベースを混乱させたくない場合は、アノテーションを外部に保存することもできます。 アノテーション付きのファイルを共通リポジトリにコミットするか、ローカル環境に排他的に保持するかを選択できます。

外部アノテーションは、 annotations.xml という XML ファイルのソースコードの外に保存される通常のアノテーションです。

それらを使用する一般的なケースは次のとおりです。

  • メンバーがさまざまな IDE と静的分析ツールを使用するチームで作業する

  • ライブラリクラスなど、ソースを変更できないコードにアノテーションを付ける

  • 非常に特定の目的を果たすアノテーション (たとえば、 @Async.Schedule/Execute@DebugRenderer) からコードをクリーンに保ちます。

コードでは、外部アノテーションは External annotation icon ガターアイコンでマークされ、灰色でハイライトされます。 デフォルトでは、IntelliJ IDEA はエディターに外部アノテーションを表示します。

ガター内の外部アノテーションアイコン

外部アノテーションを有効化

外部アノテーションを使用するには、設定で有効にする必要があります。 この手順を省略した場合、ライブラリコードに外部的にアノテーションを付けることができますが、ソースコードで外部アノテーションを使用することはできません。

  1. Ctrl+Alt+S を押して設定を開き、 エディター | コードスタイル | Java | コード生成 を選択します。

  2. 外部アノテーションを使用 のチェックボックスを選択します。

外部アノテーションを追加

  1. 次のいずれかの方法で外部アノテーションを指定します。

    • プロジェクトコードで作業するときには、アノテーションを入力してから、 外部へのアノテーション のインテンションアクションを使用できます。 インテンションアクションメニューにアクセスするには、アノテーションにキャレットを置いて Alt+Enter (またはインテンションアクションの Intention action icon アイコンをクリックします)。

      通常のアノテーションを外部アノテーションに変換する
    • プロジェクトコードとライブラリの両方に使用できる別の方法は、要素自体で アノテーション インテンションアクションを使用することです。

      新しい外部アノテーションを追加する

      現在のコンテキストで使用可能なアノテーションに応じて、IntelliJ IDEA はメニューから目的のアノテーションを選択するか、使用できるアノテーションが 1 つしかない場合は、すぐに挿入することを提案します。

  2. プロジェクトまたはモジュール用にアノテーションディレクトリがまだ構成されていない場合、IntelliJ IDEA はそれをセットアップするようにプロンプトを出します。

    このモジュール内に追加する各外部アノテーションは、このフォルダーに保存されます。 複数のアノテーションルートがある場合、IntelliJ IDEA はどれを使用するかを確認します。

    この場所は後で変更できます。

外部アノテーションを削除

  • アノテーション付き要素の近くにあるガターアイコンをクリックし、 アノテーション解除 を選択します。

    外部アノテーションを削除する

アノテーションのルートディレクトリを設定

アノテーションルートディレクトリは、外部アノテーションを保存するフォルダーです。 これらは、適用されるプロジェクトの部分に応じて、さまざまな場所で構成されます。

  • プロジェクト全体: プロジェクト構造 Ctrl+Alt+Shift+S | SDKs | アノテーション

  • 個々のモジュールについて: プロジェクト構造 Ctrl+Alt+Shift+S | モジュール | パス | 外部アノテーション

  • 外部 Maven/Gradle 依存関係の場合: プロジェクト構造 Ctrl+Alt+Shift+S | モジュール | 依存関係 | アノテーション

外部アノテーションを非表示

外部アノテーションは、デフォルトでエディターに表示されます。 コードから隠すことができます:

  • 外部アノテーションを右クリックし、 外部アノテーションの表示 オプションを無効にします。 インレイヒントが非表示の場合、ガター内の External annotation icon アイコンのみがコード内での存在をマークします。

後でインレイヒントを有効にしたい場合は、 設定 Ctrl+Alt+S | エディター | インレイヒント | Java で実行できます。

言語インジェクションのアノテーション付け

JetBrains アノテーションライブラリの @Language アノテーションを使用して、メンバーやパラメーターなどのコード要素に言語インジェクションとしてアノテーションを付けることができます。 これにより、IDE で適切なハイライト表示、ナビゲーション、検索が可能になります。

例: アノテーションパラメーターを Java メソッドを参照するものとしてマークできます。

import org.intellij.lang.annotations.Language; // you can use @Language as a meta-annotation @Language("jvm-method-name") @interface MethodName {} @interface ComponentProperties { @MethodName String waitForMethod() default ""; } class MainComponent { @ComponentProperties(waitForMethod = "waitForExampleComponent") public ExampleComponent exampleComponent; private void waitForExampleComponent() { } }

IntelliJ IDEA は、アノテーションが付けられた文字列をメソッド名として認識し、アノテーションが付けられた要素で 名前変更リファクタリングやその他の機能を使用できるようにします。

名前変更ポップアップは、ターゲットメソッドとアノテーション付き文字列の両方の名前を変更する
2026 年 3 月 30 日