Java 10で導入された var
によるローカル型推論結果は JShell で手軽に確認できる。1
JShellではGenerics Type Parameters部の推論結果も表示されるため、Javaコンパイラ(javac
)より役立つケースがあるかもしれない。(※個人差があります)
$ jshell
| Welcome to JShell -- Version 10
| For an introduction type: /help intro
jshell> var as = new ArrayList<String>();
as ==> []
jshell> var ao = new ArrayList<>();
ao ==> []
jshell> var ar = new ArrayList();
ar ==> []
jshell> /vars
| ArrayList<String> as = []
| ArrayList<Object> ao = []
| ArrayList ar = []
jshell> var li = List.of(1, 2);
li ==> [1, 2]
jshell> var lx = List.of(1, 2.0);
lx ==> [1, 2.0]
jshell> var ly = List.of(1, "2");
ly ==> [1, 2]
jshell> /vars
| List<Integer> li = [1, 2]
| List<Number&Comparable<? extends Number&Comparable<?>>> lx = [1, 2.0]
| List<Serializable&Comparable<? extends Serializable&Comparable<?>>> ly = [1, 2]
変数lx
, ly
で推論されている複雑な型は 型推論と無限型(infinite type) を参照のこと。
-
/vars
はJShellのコマンド。 ↩