Java SE 7, le projet Coin

Extrait du cours Java SE 7, le projet Coin

11.4. L’opérateur diamant
Avant Java 7, il était obligatoire, lors de l’instanciation d’une classe utilisant les generics, de préciser le type generic dans la déclaration de la variable et dans l’invocation du constructeur.
Exemple ( code Java 5.0 ) :
1. Map<Integer, String> maMap = new HashMap<Integer, String>();
Avec Java 7, il est possible de remplacer les types generics utilisés lors de l’invocation du constructeur pour créer une instance par le simple opérateur
<>, dit opérateur diamant (diamond operator), qui permet donc de réaliser une inférence de type.
Ceci est possible tant que le constructeur peut déterminer les arguments utilisés dans la déclaration du type generic à créer.
Exemple ( code Java 7 ) :
1. Map<Integer, String> maMap = new HashMap<>();
L’utilisation de l’opérateur diamant n’est pas obligatoire. Si l’opérateur diamant est omis, le compilateur génère un warning de type unchecked
conversion.
Exemple ( code Java 7 ) :
1.Map<Integer, String> maMap = new HashMap();
2. // unchecked conversion warning
La déclaration et l’instanciation d’un type qui utilise les generics peuvent être verbeux. L’opérateur diamant est très pratique lorsque les types generics utilisés sont complexes : le code est moins verbeux et donc plus simple à lire
Exemple ( code Java 5.0 ) :
1.Map<Integer, Map<String, List<String>>> maCollection = new HashMap<Integer,
2.Map<String, List<String>>>();
L’inconvénient dans le code Java 5 ci-dessus est que le type generic utilisé doit être utilisé dans la déclaration et dans la création de l’instance : cette utilisation est redondante. Avec Java 7 et l’utilisation de l’opérateur diamant, le compilateur va automatiquement reporter le type utilisé dans la déclaration.
Exemple ( code Java 7 ) :
1.Map<Integer,Map<String, List<String>>> maCollection = new HashMap<>();
Cette inférence de type réalisée avec l’opérateur diamant n’est utilisable qu’avec un constructeur.
L’utilisation de l’opérateur est conditionnée par le fait que le compilateur puisse déterminer le type. Dans le cas contraire, une erreur de compilation est émise.

…….

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Java SE 7, le projet Coin (440 KO) (Cours PDF)

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *