Java10で型推論を使ってみた


Java10で型推論を使ってみた

Java10がリリースされ、型推論ができるようになったみたいなので、その動作確認です。

■型推論とは

データ型を宣言せず、代入する値などでデータ型を自動的に決定してくれる仕組みです。
Javaではローカル変数のみで使用可能で、変数宣言時にデータ型のところに「var」と記述します。
例) var num = 10;
では確認してみましょう!

JDKのダウンロードは以下から可能です
http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html

■TypeInferenceSample01.java

public class TypeInferenceSample01 {
	public static void main(String[] args) {
		var x = 10;
		var y = 20;
		var z = 3.0;
		
		int sum = x + y;
		System.out.println(sum);
		
		var quotient = x / z;
		System.out.println(quotient);
		System.out.println((int)quotient);
	}
}

【実行結果】
30
3.3333333333333335
3

おおお、実行できました。
計算、暗黙的型変換、キャストもできています。

■TypeInferenceSample02.java

public class TypeInferenceSample02 {
	public static void main(String[] args) {
		var str = "文字列";
		var num = Integer.valueOf(10);
		var obj = (Object) str;
		
		System.out.println(obj);
		System.out.println(num.toString());
	}
}

【実行結果】
文字列
10

参照型も動いています。

■TypeInferenceSample03.java

import java.util.ArrayList;

public class TypeInferenceSample03 {
	public static void main(String[] args) {
		var numList = new ArrayList<>();
		
		numList.add(10);
		numList.add(20);
		
		int sum = 0;
		for(int num : numList) {
			sum += num;
		}
		System.out.println(sum);
	}
}

【実行結果】
エラー: 不適合な型: Objectをintに変換できません:
ですよねー。
ArrayListがインスタンス化される段階で型パラメータの値が決まるわけですもんね。
int型のリテラルを格納してますが、Integerにautoboxingされ、そこからObject型に型変換されちゃってます。
ちなみにダイヤモンド演算子を使わず、右辺のジェネリックスにIntegerを指定したら実行できました。
var numList = new ArrayList<Integer>();

また何か気がついたことがあれば記述したいと思います!

  • このエントリーをはてなブックマークに追加

PAGE TOP