Class FractionConverter
java.lang.Object
org.apache.sis.internal.converter.FractionConverter
- All Implemented Interfaces:
Serializable,Function<Fraction,,Integer> ObjectConverter<Fraction,Integer>
Handles conversions from
Fraction to other kind of numbers.- Since:
- 0.8
- Version:
- 0.8
- Author:
- Martin Desruisseaux (Geomatys)
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final FractionConverterThe unique instance of this converter. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionConverts the given fraction to an integer.final booleanPerforms the comparisons documented inObject.equals(Object)with an additional check: if both objects to compare areSystemConverter, then also requires the two objects to be of the same class.Returns the source class given at construction time.Returns the target class given at construction time.final inthashCode()Returns a hash code value for thisClassPair.inverse()Returns the converter from integers to fractions.Declares that this converter is injective, surjective, invertible and preserve order.protected final ObjectReturns the singleton instance on deserialization, if any.toString()Returns a string representation for this entry.unique()Returns the unique instance of this converter.
-
Field Details
-
INSTANCE
The unique instance of this converter.
-
-
Constructor Details
-
FractionConverter
public FractionConverter()Creates a new converter. Only one instance is enough, but this constructor needs to be public for allowing invocation byServiceLoader.
-
-
Method Details
-
unique
Returns the unique instance of this converter.- Returns:
- the unique instance of this converter.
- See Also:
-
properties
Declares that this converter is injective, surjective, invertible and preserve order.- Returns:
- the properties of this bijective converter.
-
apply
Converts the given fraction to an integer.- Parameters:
value- the fraction to convert.- Returns:
- the given fraction as an integer.
- Throws:
UnconvertibleObjectException- if the given fraction is not an integer.
-
inverse
Returns the converter from integers to fractions.- Specified by:
inversein interfaceObjectConverter<Fraction,Integer> - Returns:
- the inverse converter.
- See Also:
-
getSourceClass
Returns the source class given at construction time.- Specified by:
getSourceClassin interfaceObjectConverter<S,T> - Returns:
- the type of objects to convert.
-
getTargetClass
Returns the target class given at construction time.- Specified by:
getTargetClassin interfaceObjectConverter<S,T> - Returns:
- the type of converted objects.
-
equals
Performs the comparisons documented inObject.equals(Object)with an additional check: if both objects to compare areSystemConverter, then also requires the two objects to be of the same class. We do that in order to differentiate the "ordinary" converters from theFallbackConverter.Implementation note
This is admittedly a little bit convolved. A cleaner approach would have been to not allow theConverterRegisterhash map to contain anything else thanClassPairkeys, but the current strategy of using the same instance for keys and values reduces a little bit the number of objects to create in the JVM. Another cleaner approach would have been to compareObjectConverters in a separated method, but users invokingequalson our system converters could be surprised.Our
equals(Object)definition have the following implications regarding the way to use theConverterRegistry.convertersmap:- When searching for a converter of the same class than the key (as in the
ConverterRegistry.findEquals(SystemConverter)method), then there is no restriction on the key that can be given to theMap.get(K)method. TheMapis "normal". - When searching for a converter for a pair of source and target classes
(as in
ConverterRegistry.find(Class, Class)), the key shall be an instance ofClassPairinstance (not a subclass).
- Parameters:
other- the object to compare with thisSystemConverter.- Returns:
trueif the given object is aClassPairor a converter of the same class thanthis, and both have the same source and target classes.
- When searching for a converter of the same class than the key (as in the
-
readResolve
Returns the singleton instance on deserialization, if any. If no instance already exist in the virtual machine, we do not cache the instance (for now) for security reasons.- Returns:
- the object to use after deserialization.
- Throws:
ObjectStreamException- if the serialized object defines an unknown data type.
-
hashCode
public final int hashCode()Returns a hash code value for thisClassPair. SeeObject.equals(Object)javadoc for information on the scope of this method. -
toString
Returns a string representation for this entry. Used for formatting error messages.
-