Guide de la classe goyave

Guide de la classe de goyave

1. Vue d'ensemble

UnClassToInstanceMap<B> est un type spécial de carte qui associe des classes aux instances correspondantes. Il s'assure que toutes les clés et les valeurs sont des sous-types du type de limite supérieureB.

ClassToInstanceMap étend l'interfaceMap de Java et fournit deux méthodes supplémentaires:T getInstance(Class<T>) etT putInstance(Class<T>, T). L'avantage de cette carte est que ces deux méthodes peuvent être utilisées pour effectuer des opérations de type sécurisé et éviter de lancer.

Dans ce didacticiel, nous montrerons comment utiliser l’interfaceClassToInstanceMap de Google Guava et ses implémentations.

2. ClassToInstanceMap de Google Guava

Voyons comment utiliser la mise en œuvre.

Nous allons commencer par ajouter la dépendance de la bibliothèque Google Guava dans lespom.xml:


    com.google.guava
    guava
    21.0

La dernière version de la dépendance peut être vérifiéehere.

L'interface deClassToInstanceMap a deux implémentations: une mutable et une immuable. Jetons un coup d'œil à chacun d'eux séparément.

3. Créer unImmutableClassToInstanceMap

Nous pouvons créer une instance deImmutableClassToInstanceMap de plusieurs manières:

  • en utilisant la méthodeof() pour créer une carte vide:

    ImmutableClassToInstanceMap.of()
  • en utilisant la méthodeof(Class<T> type, T value) pour créer une seule carte d'entrée:

    ImmutableClassToInstanceMap.of(Save.class, new Save());
  • en utilisant la méthodecopyOf() qui accepte une autre carte comme paramètre. Il créera une carte avec les mêmes entrées que la carte fournie en tant que paramètre:

    ImmutableClassToInstanceMap.copyOf(someMap)
  • en utilisant le constructeur:

    ImmutableClassToInstanceMap.builder()
      .put(Save.class, new Save())
      .put(Open.class, new Open())
      .put(Delete.class, new Delete())
      .build();

4. Créer unMutableClassToInstanceMap

Nous pouvons également créer une instance deMutableClassToInstanceMap:

  • en utilisant la méthodecreate() qui fait une instance sauvegardée parHashMap:

    MutableClassToInstanceMap.create();
  • en utilisant lescreate(Map<Class<? extends B>, B> backingMap) qui font une instance sauvegardée par la carte vide fournie:

    MutableClassToInstanceMap.create(new HashMap());

5. Usage

Voyons comment utiliser les deux nouvelles méthodes ajoutées à l’interface normale deMap:

  • la première méthode est<T extends B> T getInstance(Class<T> type):

    Action openAction = map.get(Open.class);
    Delete deleteAction = map.getInstance(Delete.class);
  • la deuxième méthode est<T extends B> T putInstance(Class<T> type, @Nullable T value):

    Action newOpen = map.put(Open.class, new Open());
    Delete newDelete = map.putInstance(Delete.class, new Delete());

6. Conclusion

Dans ce tutoriel rapide, nous avons montré des exemples d'utilisation deClassToInstanceMap de la bibliothèque Guava.

L'implémentation de ces exemples peut être trouvée dans ces exemples peut être trouvée dansthe GitHub project.