0Pricing
Java Academy · レッスン

varの制限

varを使えない場所を学びます

「varの制限」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

var にはルールがある

var は便利ですが、使用には制限があります。初期化子を持つローカル変数にのみ使用できます。使用できない場所を知っておくと、わかりにくいコンパイルエラーを避けられます。

ローカル変数のみ

var はローカル変数(メソッドやループなどの内部)のみに使用できます。以下の例が有効なのは、変数がローカル変数だからです。

public class Main {
    public static void main(String[] args) {
        var greeting = "OK for locals";
        System.out.println(greeting);
    }
}

フィールドには使用不可

クラスのフィールドに var は使用できません。フィールドでは明示的に型を宣言する必要があります。ここでの count は通常のフィールドです。

public class Main {
    static int count = 0;
    public static void main(String[] args) {
        count = 5;
        System.out.println(count);
    }
}

メソッドの引数には使用不可

メソッドの引数には明示的な型が必要です。引数リストでは var を使用できないため、このメソッドでは String name と直接宣言しています。

public class Main {
    static void greet(String name) {
        System.out.println("Hi " + name);
    }
    public static void main(String[] args) {
        greet("Lee");
    }
}

戻り値の型には使用不可

メソッドの戻り値の型に var を指定することはできません。明示的に指定する必要があります。コンパイラーは戻り値の型を推論しません。

public class Main {
    static int square(int x) {
        return x * x;
    }
    public static void main(String[] args) {
        System.out.println(square(6));
    }
}

初期化子が必須

値を指定せずに var x; と記述することはできません。初期化子がなければ、コンパイラーは何から型を推論すればよいかわからないためです。必ずその場で値を代入してください。

public class Main {
    public static void main(String[] args) {
        var ready = true;
        System.out.println(ready);
    }
}

null は初期化子に使用不可

var x = null; が失敗するのは、null に特定の型がないためです。代わりに、空文字列のような型付きの値を指定してください。

public class Main {
    public static void main(String[] args) {
        var text = "";
        text = "now has a value";
        System.out.println(text);
    }
}

配列初期化子の省略構文には使用不可

var nums = {1, 2, 3}; と記述することはできません。中括弧による省略構文には、宣言された配列型が必要です。代わりに new int[]{...} を使用してください。

public class Main {
    public static void main(String[] args) {
        var nums = new int[]{1, 2, 3};
        System.out.println(nums.length);
    }
}

予約語ではない

興味深いことに、var はキーワードではなく、予約された型名です。それでもクラスを var という名前にすることはできませんが、このルールの範囲は限定されています。実際には、最新の構文と同じように扱うとよいでしょう。

public class Main {
    public static void main(String[] args) {
        var var2 = "identifiers can contain var";
        System.out.println(var2);
    }
}

対象型なしのラムダ式には使用不可

型指定のないラムダ式を var に代入することはできません。ラムダ式から型を推論するには、対象となる関数型インターフェースが必要だからです。インターフェースの型を明示的に宣言してください。

import java.util.function.IntUnaryOperator;

public class Main {
    public static void main(String[] args) {
        IntUnaryOperator doubler = x -> x * 2;
        System.out.println(doubler.applyAsInt(21));
    }
}

制限事項のまとめ

使用範囲を覚えておきましょう。ローカル変数に限られ、初期化が必須です。null、型指定のないラムダ式、中括弧による配列の省略構文には使用できず、フィールド、引数、戻り値の型にも使用できません。

public class Main {
    public static void main(String[] args) {
        var ok = 42;
        System.out.println("var is for locals: " + ok);
    }
}

確認問題

次のうち、var の正しい使用例はどれでしょうか。

まとめ

var の制限について学びました。

  • 初期化子を持つローカル変数にのみ使用できます
  • フィールド、引数、戻り値の型には使用できません
  • null や型指定のないラムダ式からは推論できません
  • 配列の中括弧による省略構文は使用できません
  • キーワードではなく、予約された型名です

よくある質問

「varの制限」レッスンは無料ですか?

はい。「varの制限」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「varの制限」で何を学びますか?

varを使えない場所を学びます ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「varの制限」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ローカル変数にvarを使う
  2. varで可読性が向上する場合
  3. forループ内のvar
  4. varの制限
← Java Academyに戻る