- All Implemented Interfaces:
StringTemplate.ProcessorPREVIEW<String,,RuntimeException> StringTemplate.Processor.LinkagePREVIEW
FormatProcessor is a preview API of the Java platform.
StringTemplate.ProcessorPREVIEW constructs a String result using
Formatter specifications and values found in the StringTemplatePREVIEW.
Unlike Formatter, FormatProcessorPREVIEW uses the value from the
embedded expression that immediately follows, without whitespace, the
format specifier.
For example:
FormatProcessor fmt = FormatProcessor.create(Locale.ROOT);
int x = 10;
int y = 20;
String result = fmt."%05d\{x} + %05d\{y} = %05d\{x + y}";
result will be "00010 + 00020 = 00030".
Embedded expressions without a preceeding format specifier, use %s
by default.
FormatProcessor fmt = FormatProcessor.create(Locale.ROOT);
int x = 10;
int y = 20;
String result1 = fmt."\{x} + \{y} = \{x + y}";
String result2 = fmt."%s\{x} + %s\{y} = %s\{x + y}";
result1 and result2 will
both be "10 + 20 = 30".
The FormatProcessorPREVIEW format specification used and exceptions thrown are the
same as those of Formatter.
However, there are two significant differences related to the position of arguments.
An explict n$ and relative < index will cause an exception due to
a missing argument list.
Whitespace appearing between the specification and the embedded expression will
also cause an exception.
FormatProcessorPREVIEW allows the use of different locales. For example:
Locale locale = Locale.forLanguageTag("th-TH-u-nu-thai");
FormatProcessor thaiFMT = FormatProcessor.create(locale);
int x = 10;
int y = 20;
String result = thaiFMT."%4d\{x} + %4d\{y} = %5d\{x + y}";
result will be
" ๑๐ + ๒๐ = ๓๐".
For day to day use, the predefined FMT FormatProcessorPREVIEW
is available. FMT is defined using the Locale.ROOT.
Example:
int x = 10;
int y = 20;
String result = FMT."0x%04x\{x} + 0x%04x\{y} = 0x%04x\{x + y}";
result will be "0x000a + 0x0014 = 0x001E".- Since:
- 21
- See Also:
-
Nested Class Summary
Nested classes/interfaces declared in interface java.lang.StringTemplate.ProcessorPREVIEW
StringTemplate.Processor.LinkagePREVIEW -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final FormatProcessorPREVIEWThis predefinedFormatProcessorPREVIEW instance constructs aStringresult using the Locale.ROOTLocale. -
Method Summary
Modifier and TypeMethodDescriptionstatic FormatProcessorPREVIEWCreate a newFormatProcessorPREVIEW using the specified locale.linkage(List<String> fragments, MethodType type) Constructs aMethodHandlethat when supplied with the values from aStringTemplatePREVIEW will produce a result equivalent to that provided byprocess(StringTemplate).final Stringprocess(StringTemplatePREVIEW stringTemplate) Constructs aStringbased on the fragments, format specifications found in the fragments and values in the suppliedStringTemplatePREVIEW object.
-
Field Details
-
FMT
This predefinedFormatProcessorPREVIEW instance constructs aStringresult using the Locale.ROOTLocale. SeeFormatProcessorPREVIEW for more details. Example:In the above example, the value ofint x = 10; int y = 20; String result = FMT."0x%04x\{x} + 0x%04x\{y} = 0x%04x\{x + y}";resultwill be"0x000a + 0x0014 = 0x001E".- See Also:
-
-
Method Details
-
create
Create a newFormatProcessorPREVIEW using the specified locale.- Parameters:
locale-Localeused to format- Returns:
- a new instance of
FormatProcessorPREVIEW - Throws:
NullPointerException- if locale is null
-
process
Constructs aStringbased on the fragments, format specifications found in the fragments and values in the suppliedStringTemplatePREVIEW object. This method constructs a format string from the fragments, gathers up the values and evaluates the expression asif evaulatingnew Formatter(locale).format(format, values).toString().If an embedded expression is not immediately preceded by a specifier then a
%sis inserted in the format.- Specified by:
processin interfaceStringTemplate.ProcessorPREVIEW<String,RuntimeException> - Parameters:
stringTemplate- aStringTemplatePREVIEW instance- Returns:
- constructed
String - Throws:
IllegalFormatException- If a format specifier contains an illegal syntax, a format specifier that is incompatible with the given arguments, a specifier not followed immediately by an embedded expression or other illegal conditions. For specification of all possible formatting errors, see the details section of the formatter class specification.NullPointerException- if stringTemplate is null- See Also:
-
linkage
Constructs aMethodHandlethat when supplied with the values from aStringTemplatePREVIEW will produce a result equivalent to that provided byprocess(StringTemplate). ThisMethodHandleis used byFMTand the ilk to perform a more specialized composition of a result. This specialization is done by prescanning the fragments and value types of aStringTemplatePREVIEW.Process template expressions can be specialized when the processor is of type
StringTemplate.Processor.LinkagePREVIEW and fetched from a static constant as isFMT(static final FormatProcessor).Other
FormatProcessorsPREVIEW can be specialized when stored in a static final. For example:FormatProcessor THAI_FMT = FormatProcessor.create(Locale.forLanguageTag("th-TH-u-nu-thai"));THAI_FMTwill now produce specializedMethodHandlesby way oflinkage(List, MethodType). Seeprocess(StringTemplate)for more information.- Specified by:
linkagein interfaceStringTemplate.Processor.LinkagePREVIEW- Parameters:
fragments- string template fragmentstype- method type, includes the StringTemplate receiver as well as the value types- Returns:
MethodHandlefor the processor applied to template- Throws:
IllegalFormatException- If a format specifier contains an illegal syntax, a format specifier that is incompatible with the given arguments, a specifier not followed immediately by an embedded expression or other illegal conditions. For specification of all possible formatting errors, see the details section of the formatter class specification.NullPointerException- if fragments or type is null- See Also:
-
FormatProcessorwhen preview features are enabled.