|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.deegree_impl.model.resources.ClassChanger
Transforme un objet d'une classe vers une autre. Cette classe sert principalement
à convertir en Number
des objets d'une autre classe, par exemple Date
. Une méthode
statique, toNumber(java.lang.Comparable)
, se charge d'effectuer ce genre de conversion en prenant en compte toutes
les classes qui auront été déclarées à ClassChanger
.
Pour déclarer une nouvelle classe, on peut procéder comme suit. L'exemple ci-dessous
inscrit une classe qui convertira des objets Date
en objets Long
. Notez qu'il ne s'agit
que d'un exemple. Ce convertisseur n'a pas besoin d'être déclaré car ClassChanger
comprend
déjà les objets Date
par défaut.
ClassChanger.register(new ClassChanger(Date.class, Long.class) { protected Number convert(final Comparable o) {return new Long(((Date) o).getTime());} protected Comparable inverseConvert(final Number number) {return new Date(number.longValue());} });
Field Summary | |
private static ClassChanger[] |
list
Liste des classes d'objets pouvant être convertis en nombre. |
private java.lang.Class |
source
Parent class for convert(java.lang.Comparable) 's input objects. |
private java.lang.Class |
target
Parent class for convert(java.lang.Comparable) 's output objects. |
Constructor Summary | |
protected |
ClassChanger(java.lang.Class source,
java.lang.Class target)
Construct a new class changer. |
Method Summary | |
protected abstract java.lang.Number |
convert(java.lang.Comparable object)
Returns the numerical value for an object. |
private static ClassChanger |
getClassChanger(java.lang.Class source)
Returns the class changer for the specified classe. |
static java.lang.Class |
getTransformedClass(java.lang.Class source)
Returns the target class for the specified source class, if a suitable transformation is known. |
protected abstract java.lang.Comparable |
inverseConvert(java.lang.Number value)
Returns an instance of the converted classe from a numerical value. |
static void |
register(ClassChanger converter)
Inscrit un nouvel objet ClassChanger . |
static java.lang.Comparable |
toComparable(java.lang.Number value,
java.lang.Class classe)
Wrap the specified number as an instance of the specified classe. |
static java.lang.Number |
toNumber(java.lang.Comparable object)
Returns the numeric value for the specified object. |
java.lang.String |
toString()
Returns a string representation for this class changer. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
private static ClassChanger[] list
ClassChanger
pour quelques classes standards
du Java, telle que Date
. Toutefois, d'autres objets pourront être ajoutés par
la suite. Cette liste est ordonnée. Les classe le plus hautes dans la hierarchie
(les classes parentes) doivent apparaître à la fin.
private final java.lang.Class source
convert(java.lang.Comparable)
's input objects.
private final java.lang.Class target
convert(java.lang.Comparable)
's output objects.
Constructor Detail |
protected ClassChanger(java.lang.Class source, java.lang.Class target)
source
- Parent class for convert(java.lang.Comparable)
's input objects.target
- Parent class for convert(java.lang.Comparable)
's output objects.Method Detail |
protected abstract java.lang.Number convert(java.lang.Comparable object) throws java.lang.ClassCastException
object
- Object to convert (may be null).
java.lang.ClassCastException
- if object
is not of the expected class.protected abstract java.lang.Comparable inverseConvert(java.lang.Number value)
value
- The value to wrap.
public java.lang.String toString()
public static void register(ClassChanger converter) throws java.lang.IllegalStateException
ClassChanger
. Les objets ClassChanger
inscrits
ici seront pris en compte par la méthode toNumber(java.lang.Comparable)
. Si un objet ClassChanger
existait déjà pour une même classe, une exception sera lancée. Cette spécification est justifiée
par le fait qu'on enregistre souvent un objet ClassChanger
lors de l'initialisation
d'une classe qui vient d'être chargée pour la première fois. En interdisant tout changements aux
objets ClassChanger
après l'initialisation d'une classe, on évite que la façon de
convertir des objets en nombres réels ne change au cours d'une exécution de la machine virtuelle.
Notez que si converter
ne peut pas prendre en charge une même classe que celle d'un
autre objet ClassChanger
, il peut toutefois prendre en charge une classe parente ou
une classe fille.
converter
- Convertisseur à ajouter à la liste des convertisseurs déjà existants.
java.lang.IllegalStateException
- si un autre objet ClassChanger
prennait déjà
en charge la même classe (l'argument classe
déclaré au constructeur)
que converter
.private static ClassChanger getClassChanger(java.lang.Class source) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException
- if source
is not a registered class.public static java.lang.Class getTransformedClass(java.lang.Class source)
Comparable
subclass that will be specified as input to convert(java.lang.Comparable)
.
The target class is a Number
subclass that wimm be returned as output by convert(java.lang.Comparable)
.
If no suitable mapping is found, then source
is returned.
public static java.lang.Number toNumber(java.lang.Comparable object) throws java.lang.ClassNotFoundException
toNumber(new Date())
returns the Date.getTime()
value of the specified date object as a Long
.
object
- Object to convert (may be null).
null
if object
was null; otherwise
object
if the supplied object is already an instance
of Number
; otherwise a new number with the numerical value.
java.lang.ClassNotFoundException
- if object
is not an instance of a registered class.public static java.lang.Comparable toComparable(java.lang.Number value, java.lang.Class classe) throws java.lang.ClassNotFoundException
toComparable(Date.class, new Long(time))
is equivalent to new Date(time)
. There is of course no
point to use this method if the destination class is know at compile time.
This method is useful for creating instance of classes choosen dynamically
at run time.
value
- The numerical value (may be null).classe
- The desired classe for return value.
java.lang.ClassNotFoundException
- if classe
is not a registered class.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |