Var in Java 10 eingeführt. Es ist praktisch, aber in einigen Fällen kann es süchtig machen.
Beispielcode
var list = Set.of(BigDecimal.ZERO, BigDecimal.ONE);
//Was ist der Typ dieses Sammlers?
var toList = Collectors.toList();
var list2 = list.stream().collect(toList);
//Was ist die Art von Liste2? Richtige Antwort: Liste<Object>
System.out.println(list2.get(0));
Wenn alle folgenden Bedingungen erfüllt sind, ist der Typ Objekttyp, da der Typ nicht bestimmt werden kann. (1) Es gibt kein Argument oder der generische Typ wird durch das Argument nicht festgelegt (2) Es ist kein Typargument angegeben
Die Vermeidung selbst ist jedoch nicht schwierig, und die Erkennung ist nicht schwierig.
Beispielcode 1(Geben Sie das Typargument an)
var list = Set.of(BigDecimal.ZERO, BigDecimal.ONE);
//Was ist der Typ dieses Sammlers?
var toList = Collectors.<BigDecimal>toList();
var list2 = list.stream().collect(toList);
//Was ist die Art von Liste2? Richtige Antwort: Liste<BigDecimal>
System.out.println(list2.get(0));
Beispielcode 2(Verwenden Sie var nicht wie gewohnt)
var list = Set.of(BigDecimal.ZERO, BigDecimal.ONE);
Collector<BigDecimal, ?, List<BigDecimal>> toList = Collectors.toList();
var list2 = list.stream().collect(toList);
//Was ist die Art des Artikels?
System.out.println(list2.get(0));
In diesem Fall geht es jedoch nicht nur darum, wie man es vermeidet. Es scheint, dass der schwierige Punkt darin besteht, "zu integrieren oder nicht? Welche Art von Antwortpolitik sollte vereinheitlicht werden?" Für das neue Element namens var, aber übrigens.
Recommended Posts