javax.units
Class PrefixSet

java.lang.Object
  extended byjavax.units.PrefixSet
All Implemented Interfaces:
java.io.Serializable

final class PrefixSet
extends java.lang.Object
implements java.io.Serializable

Ensemble de préfix. Cette classe maintient une liste d'objets Prefix en ordre croissant et sans doublons, c'est-à-dire qu'elle garanti qu'il n'y aura pas deux préfix représentant la même quantité Prefix.amount.

Version:
1.0
Author:
Martin Desruisseaux

Field Summary
private static WeakHashSet pool
          Banque des objets qui ont été précédemment créés et enregistrés par un appel à la méthode intern().
private  Prefix[] prefix
          Ensemble de préfix.
 
Constructor Summary
private PrefixSet(Prefix[] p)
          Construit un ensemble de préfix.
 
Method Summary
 boolean equals(java.lang.Object other)
          Vérifie si cet ensemble est identique à l'objet other spécifié.
 Prefix getPrefix(double amount)
          Retourne le préfix représentant une quantité égale ou inférieure à la quantité spécifiée.
 Prefix getPrefix(java.lang.String symbol)
          Retourne le préfix représenté par le symbole spéfifié.
static PrefixSet getPrefixSet(Prefix[] p)
          Construit un ensemble de préfix.
 int hashCode()
          Retourne un code représentant cet ensemble de préfix.
private  PrefixSet intern()
          Retourne un exemplaire unique de cet ensemble de préfix.
private  java.lang.Object readResolve()
          Après la lecture d'une unité, vérifie si ce préfix apparaît déjà dans la banque des préfix #PREFIX.
 java.lang.String toString()
          Retourne une chaîne de caractères qui énumère tous les préfix contenu dans cet ensemble.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

pool

private static final WeakHashSet pool
Banque des objets qui ont été précédemment créés et enregistrés par un appel à la méthode intern().


prefix

private final Prefix[] prefix
Ensemble de préfix. Les préfix de cet ensemble doivent obligatoirement être un ordre croissant et sans doublons.

Constructor Detail

PrefixSet

private PrefixSet(Prefix[] p)
Construit un ensemble de préfix. Le tableau p sera copié, puis classé. Les éventuels doublons seront éliminés. Le tableau p original ne sera pas affecté par ces traitements.

Method Detail

getPrefixSet

public static PrefixSet getPrefixSet(Prefix[] p)
Construit un ensemble de préfix. Le tableau p sera copié, puis classé. Les éventuels doublons seront éliminés. Le tableau p original ne sera pas affecté par ces traitements.


getPrefix

public Prefix getPrefix(java.lang.String symbol)
Retourne le préfix représenté par le symbole spéfifié. Si aucun préfix ne correspond à ce symbole, retourne null.

Parameters:
symbol - Symbole du préfix recherché.
Returns:
Préfix désigné par le symbole symbol.

getPrefix

public Prefix getPrefix(double amount)
Retourne le préfix représentant une quantité égale ou inférieure à la quantité spécifiée. Si amount est inférieur à la plus petite quantité pouvant être représenté par un préfix, alors cette méthode retourne null.


toString

public java.lang.String toString()
Retourne une chaîne de caractères qui énumère tous les préfix contenu dans cet ensemble. La chaîne sera de la forme "milli(m),centi(c),déci(d),kilo(k)" par exemple.


equals

public boolean equals(java.lang.Object other)
Vérifie si cet ensemble est identique à l'objet other spécifié. Deux ensembles sont considérés identiques s'ils contienent les mêmes préfix.


hashCode

public int hashCode()
Retourne un code représentant cet ensemble de préfix.


intern

private final PrefixSet intern()
Retourne un exemplaire unique de cet ensemble de préfix. Une banque de préfix, initialement vide, est maintenue de façon interne par la classe PrefixSet. Lorsque la méthode intern est appelée, elle recherchera des préfix égaux à this au sens de la méthode equals(java.lang.Object). Si de tels préfix sont trouvés, ils seront retournés. Sinon, les préfix this seront ajoutés à la banque de données en utilisant une référence faible et cette méthode retournera this.

De cette méthode il s'ensuit que pour deux ensembles de préfix u et v, la condition u.intern()==v.intern() sera vrai si et seulement si u.equals(v) est vrai.


readResolve

private java.lang.Object readResolve()
                              throws java.io.ObjectStreamException
Après la lecture d'une unité, vérifie si ce préfix apparaît déjà dans la banque des préfix #PREFIX. Si oui, l'exemplaire de la banque sera retourné plutôt que de garder inutilement le préfix courant comme copie.

Throws:
java.io.ObjectStreamException