[Java10] Achten Sie darauf, var und generics nicht zusammen zu verwenden

0. Einleitung

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));

1. Warum passiert das?

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

2. Was machst du?

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

[Java10] Achten Sie darauf, var und generics nicht zusammen zu verwenden
[Java] Achten Sie auf den Schlüsseltyp der Karte
Seien Sie vorsichtig mit Anfragen und Antworten, wenn Sie das Serverless Framework mit Java verwenden
[Java] Generics-Klasse und Generics-Methode
Java Generics T und? Unterschied
Vor- und Nachteile von Java
[Java] Vergleichsmethode für Zeichenketten und Vergleichsmethode mit regulären Ausdrücken
Achten Sie bei der Verwendung von MessageEncryptor mit Rails 5.2 / 6.0 auf den Zeitpunkt der Initialisierung
Seien Sie vorsichtig, wenn Sie mehrere Artikel verwenden
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Java Generics (definiert Klassen und Methoden)
Zusammenfassung der objektorientierten Programmierung mit Java
Ich habe versucht, Google HttpClient von Java zu verwenden
Stellen Sie mit Ansible und Jenkins ein Image bereit, das aus Tomcat, Java und MySQL besteht
Analysieren und objektivieren Sie JSON mithilfe der Annotation @JsonProperty von Jackson, einer Java-Bibliothek
Zeigen Sie den japanischen Kalender und Tag mit der Java8-Standardklasse an
Java Jshell und Var sind zu empfehlen!
Implementierung von Registerkarten mit TabLayout und ViewPager
[Java / Swift] Vergleich von Java-Schnittstelle und Swift-Protokoll
Zusammenarbeit zwischen Java und Derby mit JDBC (mit NetBeans)
Zusammenfassung von Java Math.random und Import (Kalender)
[Java] Inhalt der Collection-Schnittstelle und der List-Schnittstelle
Diskriminierung von Enum in Java 7 und höher
[Java] Generika
Erstellen Sie eine API mit Retrofit2, Okhttp3 und Gson (Java).
Installieren Sie Java und Android-SDK auf dem Mac mit Homebrew
Dinge, die Sie beim Schreiben von Java beachten sollten
Seien Sie vorsichtig, wenn Sie SHIFT-JIS in Java finden
[Java] Persönliche Zusammenfassung der Klassen und Methoden (grundlegend)
Überprüfung der Auswirkungen auf die Leistung bei Verwendung von Java Volatile
[Java] Der verwirrende Teil von String und StringBuilder
Einfache Installation von Nginx und Docker mit ansible
Ich habe die Eigenschaften von Java und .NET verglichen
Versuchen Sie eine ähnliche Suche in der Bildsuche mit dem Java SDK [Suche]
[Java] Kurzschlüsse beachten (Kurzschlussauswertung)
[Java] Klassifizierungsnotiz für Kompilierungsfehler und Laufzeitfehler
Java Servlet sollte die Multithread-Umgebung kennen
Geschichte der Testautomatisierung mit Appium [Android / Java]
Java ermöglicht die Extraktion von PDF-Text und Bildern