Un KeyValuePair en Java

Je suis à la recherche d'un KeyValuePair classe en Java.

Depuis java.util lourdement utilise des interfaces n'est pas mise en œuvre concrète, seulement la Carte.Interface de saisie.

Est-il canonique de la mise en œuvre, je peux importer?
Il est l'un de ces "plombiers de la programmation des classes" je déteste mettre en œuvre 100x fois.

  • Je le recommande contre l'utilisation d'un générique KeyValuePair classe. Beaucoup mieux à définir un domaine spécifique de la classe avec le plus instructif des accesseurs (par exemple getProductId(), getProductPrice()).
  • Je suis en désaccord. Nous n'utilisons pas de domaine spécifique Map ou List classes, pourquoi devrait-il en être autrement? Un KeyValuePair est juste une Carte avec une entrée.
  • Juste point, mais je pense que le concept générique d'une Paire est plus facilement ouverte à des abus que le passage de l'Collections autour. Par exemple, si quelqu'un veut retourner deux valeurs à partir d'une méthode, il est tentant de retourner une Paire<X,Y> mais en général, cela est révélateur d'une conception sous-jacente du problème (par exemple, Pourquoi ne pas en X et Y unifiée en quelque sorte de toute façon dans le modèle de domaine si ils sont intrinsèquement liés?)
  • Parce que ce n'est pas <X,Y>, c'est <Key,Value>. Il n'est pas de demander de l'arbitraire d'un Pair type, il demande à un KeyValuePair type.
  • Malgré cela, je préfère les passer autour d'une seule instance de l'objet dans mon code, potentiellement avec un getKey() la méthode définie; par exemple, je préfère: processProduct(Produit) processProduct(KeyValuePair<Integer, Produit>) où le nombre Entier est l'ID de produit. Je suis d'accord que KeyValuePair (c'est à dire la Carte.Entry) ou même un générique Paire est utile dans une logique de la méthode, mais je ne l'aime pas de "fuite" comme un type de retour ou être fourni comme un paramètre de méthode; par exemple, je n'ai jamais passer autour de la Carte.De l'entrée.
InformationsquelleAutor maayank | 2010-06-04