public interface UnitFormat
Unit
to a String
or Appendable
and parses a CharSequence
to a Unit
.
Instances of this class are not required to be thread-safe. It is recommended to use separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.
Unit
Modifier and Type | Method and Description |
---|---|
java.lang.String |
format(Unit<?> unit)
Formats the specified
Unit . |
java.lang.Appendable |
format(Unit<?> unit,
java.lang.Appendable appendable)
Formats the specified
Unit . |
default boolean |
isLocaleSensitive()
|
void |
label(Unit<?> unit,
java.lang.String label)
Attaches a system-wide label to the specified unit.
|
Unit<?> |
parse(java.lang.CharSequence csq)
Parses the text into an instance of
Unit . |
Unit<?> |
parse(java.lang.CharSequence csq,
java.text.ParsePosition cursor)
Parses a portion of the specified
CharSequence from the specified position to produce a Unit . |
java.lang.Appendable format(Unit<?> unit, java.lang.Appendable appendable) throws java.io.IOException
Unit
.unit
- the Unit
to format, not null
appendable
- the appendable destination.java.io.IOException
- if an error occurs while writing to the destination.java.lang.String format(Unit<?> unit)
Unit
.unit
- the Unit
to format, not null
UnitFormat
.void label(Unit<?> unit, java.lang.String label)
If the specified label is already associated to a unit the previous association can be discarded or ignored. Depending on the UnitFormat
implementation, this call may be ignored if the particular unit already has a label.
UnitFormat
implementation is explicitly immutable, similar to e.g. the result of Collections.unmodifiableList(),
then an UnsupportedOperationException may be thrown upon this call.
Since UnitFormat implementations often apply the Singleton pattern, system-wide means, the label applies to every instance of UnitFormatA implementing UnitFormat in this case, but not every instance of UnitFormatB or UnitFormatC both also implementing UnitFormat. If a UnitFormat #isLocaleSensitive() it is up to the implementation, whether the label is ignored, applied in a local-neutral manner (in addition to its local-sensitive information) or locale-specific.
unit
- the unit being labeled.label
- the new label for this unit.java.lang.IllegalArgumentException
- if the label is not a valid identifier. This may include characters not supported by a particular UnitFormat
implementation
(e.g. only ASCII characters for certain devices)java.lang.UnsupportedOperationException
- if the label operation is not supported by this UnitFormat
default boolean isLocaleSensitive()
true
if this UnitFormat
depends on a Locale
to perform its tasks.
In environments that do not support a Locale
, e.g. Java ME, this usually returns false
.
Unit<?> parse(java.lang.CharSequence csq, java.text.ParsePosition cursor) throws java.lang.IllegalArgumentException, MeasurementParseException
CharSequence
from the specified position to produce a Unit
. If parsing succeeds, then
the index of the cursor
argument is updated to the index after the last character used.csq
- the CharSequence
to parse.cursor
- the cursor holding the current parsing index.java.lang.IllegalArgumentException
- if any problem occurs while parsing the specified character sequence (e.g. illegal syntax).MeasurementParseException
Unit<?> parse(java.lang.CharSequence csq) throws MeasurementParseException
Unit
.
The parse must complete normally and parse the entire text. If the parse completes without reading the entire length of the text, an exception is thrown. If any other problem occurs during parsing, an exception is thrown.
csq
- the CharSequence
to parse.MeasurementParseException
- if any problem occurs while parsing the specified character sequence (e.g. illegal syntax).java.lang.UnsupportedOperationException
- if the UnitFormat
is unable to parse.Copyright © 2014–2018 Jean-Marie Dautelle, Werner Keil, Otavio Santana. All rights reserved.