[Java10] Veillez à utiliser ensemble var et génériques

0. Introduction

Var introduit dans Java 10. C'est pratique, mais dans certains cas, cela peut créer une dépendance.

Exemple de code


var list = Set.of(BigDecimal.ZERO, BigDecimal.ONE);
//Quel est le type de ce collecteur?
var toList = Collectors.toList();
var list2 = list.stream().collect(toList);

//Quel est le type de list2? Bonne réponse: liste<Object>
System.out.println(list2.get(0));

1. Pourquoi cela se produit-il?

Si toutes les conditions suivantes sont remplies, il s'agira d'un type d'objet car le type ne peut pas être déterminé. (1) Il n'y a pas d'argument, ou le type générique n'est pas déterminé par l'argument (2) Aucun argument de type n'est spécifié

2. Que faites-vous?

Cependant, l'évitement lui-même n'est pas difficile et la détection n'est pas difficile. -Spécifier l'argument de type ・ N'utilisez pas var comme avant

Exemple de code 1(Spécifiez l'argument de type)


var list = Set.of(BigDecimal.ZERO, BigDecimal.ONE);
//Quel est le type de ce collecteur?
var toList = Collectors.<BigDecimal>toList();
var list2 = list.stream().collect(toList);

//Quel est le type de list2? Bonne réponse: liste<BigDecimal>
System.out.println(list2.get(0));

Exemple de code 2(Évitez d'utiliser var comme avant)



var list = Set.of(BigDecimal.ZERO, BigDecimal.ONE);

Collector<BigDecimal, ?, List<BigDecimal>>  toList = Collectors.toList();
var list2 = list.stream().collect(toList);

//Quel est le type d'article?
System.out.println(list2.get(0));

Cependant, cette affaire ne concerne pas seulement "comment l'éviter?" Il semble que le point difficile soit "d'incorporer ou non? Quel type de politique de réponse devrait être unifié?" Pour le nouvel élément appelé var, mais au fait.

Recommended Posts

[Java10] Veillez à utiliser ensemble var et génériques
[Java] Faites attention au type de clé de la carte
Soyez prudent avec les demandes et les réponses lors de l'utilisation de Serverless Framework avec Java
[Java] Classe générique et méthode générique
java Generics T et? Différence
Avantages et inconvénients de Java
[Java] Méthode de comparaison de chaînes de caractères et méthode de comparaison utilisant des expressions régulières
Faites attention au moment d'initialisation lors de l'utilisation de MessageEncryptor avec Rails 5.2 / 6.0
Soyez prudent lorsque vous utilisez plusieurs articles
[Java] Essayez de mettre en œuvre à l'aide de génériques
Java Generics (définit les classes et les méthodes)
Résumé de la programmation orientée objet utilisant Java
J'ai essayé d'utiliser Google HttpClient de Java
Déployez une image composée de Tomcat, Java et MySQL à l'aide d'Ansible et Jenkins
Analyser et objectiver JSON à l'aide de l'annotation @JsonProperty de la bibliothèque Java Jackson
Afficher le calendrier et le jour japonais en utilisant la classe standard java8
java jshell et var sont trop recommandés!
Implémentation des onglets à l'aide de TabLayout et ViewPager
[Java / Swift] Comparaison de l'interface Java et du protocole Swift
Coopération entre Java et Derby en utilisant JDBC (en utilisant NetBeans)
Résumé de Java Math.random et import (calendrier)
[Java] Contenu de l'interface de collection et de l'interface de liste
Discrimination d'énum dans Java 7 et supérieur
[Java] Génériques
Créer une API à l'aide de Retrofit2, Okhttp3 et Gson (Java)
Installez java et android-sdk sur Mac en utilisant homebrew
Points à prendre en compte lors de l'écriture de Java
Soyez prudent si vous trouvez SHIFT-JIS en Java
[Java] Résumé personnel des classes et méthodes (basique)
Vérification de l'impact sur les performances lors de l'utilisation de Java volatile
[Java] La partie déroutante de String et StringBuilder
Installation simple de nginx et Docker à l'aide d'ansible
J'ai comparé les caractéristiques de Java et .NET
JAVA: réalise la génération et la numérisation de divers types de codes à barres
Essayez une recherche similaire de recherche d'images à l'aide du SDK Java [Recherche]
[Java] Attention aux courts-circuits (évaluation des courts-circuits)
[Java] Mémo de classification d'erreur de compilation et d'erreur d'exécution
Le servlet Java doit être conscient de l'environnement multithread
Histoire de l'automatisation des tests avec Appium [Android / java]
Java permet l'extraction de texte et d'images PDF