Il existe public static class AbstractMap.SimpleEntry
. Ne laissez pas la partie Abstract
du nom vous tromper: ce n'est en fait PAS une classe abstraite
(mais son AbstractMap
de niveau supérieur l'est).
Le fait que ce soit une classe imbriquée static
signifie que vous n'avez PAS besoin d'une instance AbstractMap
englobante pour l'instancier, donc quelque chose comme ceci compile bien:
Map.Entry entry = new AbstractMap.SimpleEntry("exmpleString", 42);
Comme indiqué dans une autre réponse, Guava a également une méthode de fabrique static
pratique Maps.immutableEntry
que vous pouvez utiliser.
Vous avez dit:
Je ne peux pas utiliser Map.Entry
lui-même car apparemment c'est un objet en lecture seule que je ne peux pas instancier avec instanceof
Ce n'est pas tout à fait exact. La raison pour laquelle vous ne pouvez pas l'instancier directement (c'est-à-dire avec new
) est parce qu'il s'agit d'une interface Map.Entry
.
Mise en garde et astuce
Comme indiqué dans la documentation, AbstractMap.SimpleEntry
est @since 1.6
, donc si vous êtes limité à 5.0, alors il n'est pas disponible pour vous.
Pour rechercher une autre classe connue qui implémente Map.Entry
, vous pouvez effectivement consulter directement la javadoc. Depuis la version Java 6
Interface Map.Entry
Toutes les classes implémentant connues:
Malheureusement, la version 1.5 ne répertorie aucune classe implémentante connue que vous pouvez utiliser, alors vous devez peut-être vous contenter de implémenter votre propre classe.