Sie können das Ergebnis der lokalen Typinferenz einfach überprüfen, indem Sie in JS 10 mit JShell "var" einführen. [^ 1]
[^ 1]: / vars
ist ein JShell-Befehl.
In JShell wird auch das Inferenzergebnis des Teils "Generics Type Parameters" angezeigt, sodass es Fälle geben kann, in denen es nützlicher ist als der Java-Compiler ("javac"). (* Es gibt individuelle Unterschiede)
$ 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]
Für komplexe Typen, die durch die Variablen "lx", "ly" abgeleitet werden, siehe Typinferenz und unendlicher Typ. Ding.
Recommended Posts