Java | Java の型推論 var を使った実践例

Java Java
スポンサーリンク

ここでは、Java の型推論 var を使った実践例 5つを、
初心者にも分かりやすく・実用的にまとめます。
各サンプルはすぐ動かせるコード付きです。(Java 10以降対応)

① ループ(for文)での var

ループ変数の型が明らかなときは、var を使うと読みやすくなります。

import java.util.List;
import java.util.Arrays;

class VarLoopSample {
  public static void main(String[] args) {
    var fruits = List.of("Apple", "Banana", "Cherry");

    for (var fruit : fruits) {
      System.out.println("果物:" + fruit);
    }
  }
}
Java

💬 解説

  • fruitsList<String> と推論されます。
  • fruit は自動的に String 型と判断されます。
    ループでの var は最も安全で、よく使われるパターンです。

② ジェネリクス(長い型名をスッキリ書く)

型が複雑なコレクション(MapやList)でも、右辺の型情報から推論されます。

import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;

class VarGenericSample {
  public static void main(String[] args) {
    var map = new HashMap<String, List<Integer>>();

    map.put("A", List.of(1, 2, 3));
    map.put("B", List.of(4, 5));

    for (var entry : map.entrySet()) {
      System.out.println(entry.getKey() + " → " + entry.getValue());
    }
  }
}
Java

💬 解説

  • mapHashMap<String, List<Integer>> 型と推論されます。
  • 長い型を書かなくてよいのでスッキリします。

③ 一時的な計算や中間変数での var

数値計算など、一時的に使う変数では var を使うとコードが簡潔になります。

class VarCalcSample {
  public static void main(String[] args) {
    var price = 1200;     // int
    var taxRate = 0.1;    // double
    var total = price + price * taxRate;  // double に自動変換

    System.out.println("税込価格:" + total);
  }
}
Java

💬 解説

int × double の結果は double
total は自動的に double 型になります。
型がすぐ分かる短い処理では var はとても便利です。


④ メソッドの戻り値を受け取るとき

メソッドが何を返すかが明確なときは var を使ってスッキリ書けます。

class VarMethodSample {
  public static void main(String[] args) {
    var message = getGreeting("Tanaka");
    System.out.println(message);
  }

  static String getGreeting(String name) {
    return "こんにちは、" + name + "さん!";
  }
}
Java

💬 解説

  • getGreeting()String を返すことが明確なので、var で受けても問題なし。
  • 逆に「戻り値の型が分かりにくいメソッド」では避けた方が安全です。

⑤ 条件分岐やループ内での一時変数

「処理の途中でちょっと使う変数」にも var は向いています。

import java.util.List;

class VarConditionSample {
  public static void main(String[] args) {
    var numbers = List.of(3, 8, 1, 6);

    for (var num : numbers) {
      var message = (num % 2 == 0) ? "偶数" : "奇数";
      System.out.println(num + " は " + message);
    }
  }
}
Java

💬 解説

  • message は三項演算子の結果が String なので、自動的に String 型。
  • ループ内の「短命な変数」は var 向きです。

まとめ — 実践での使いどころ早見表

シーンvar の使用理由
for-each ループ✅ 推奨型が明らかで安全
複雑なジェネリクス✅ 推奨冗長さを解消
一時的な計算✅ 推奨コードを簡潔に
明確な戻り値の受け取り✅ 可型が分かるならOK
フィールドやメソッド引数❌ 不可仕様で禁止
戻り値の型が不明なメソッド呼び出し⚠️ 非推奨可読性が下がる

おまけ:初心者向けチェックリスト

var を使っても 型が頭に浮かぶ?
→ Yes → OK
→ No → 型を明示して書こう!

タイトルとURLをコピーしました