モジュール java.base
パッケージ java.util

クラスFormatProcessor

java.lang.Object
java.util.FormatProcessor
すべての実装されたインタフェース:
StringTemplate.ProcessorPREVIEW<String,RuntimeException>, StringTemplate.Processor.LinkagePREVIEW

FormatProcessorは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効な場合のみ、プログラムでFormatProcessorを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
このStringTemplate.ProcessorPREVIEWは、Formatterの仕様およびStringTemplatePREVIEWにある値を使用して、Stringの結果を構築します。 Formatterとは異なり、FormatProcessorPREVIEWは、空白なしで、直後に続く埋込み式の値を使用します。「書式指定子」 たとえば、
FormatProcessor fmt = FormatProcessor.create(Locale.ROOT);
int x = 10;
int y = 20;
String result = fmt."%05d\{x} + %05d\{y} = %05d\{x + y}";
前述の例では、resultの値は"00010 + 00020 = 00030"になります。

フォーマット指定子を先行しない埋込み式では、デフォルトで%sを使用します。

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およびresult2の値は、両方とも"10 + 20 = 30"になります。

使用されるFormatProcessorPREVIEW書式指定およびスローされる例外は、Formatterのものと同じです。

ただし、引数の位置には2つの大きな違いがあります。 明示的なn$索引および相対<索引は、引数リストが欠落しているために例外を引き起こします。 仕様と埋込み式の間に空白が表示されると、例外も発生します。

FormatProcessorPREVIEWでは、様々なロケールを使用できます。 たとえば、

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の値は" ๑๐ + ๒๐ = ๓๐"になります。

日常的に使用する場合は、事前定義済のFMT FormatProcessorPREVIEWを使用できます。 FMTは、Locale.ROOTを使用して定義されます。 例:

int x = 10;
int y = 20;
String result = FMT."0x%04x\{x} + 0x%04x\{y} = 0x%04x\{x + y}";
前述の例では、resultの値は"0x000a + 0x0014 = 0x001E"になります。

導入されたバージョン:
21
関連項目:
  • フィールド詳細

  • メソッドの詳細

    • create

      public static FormatProcessorPREVIEW create(Locale locale)
      指定されたロケールを使用して、新しいFormatProcessorPREVIEWを作成します。
      パラメータ:
      locale - 書式設定に使用されるLocale
      戻り値:
      FormatProcessorPREVIEWの新しいインスタンス
      例外:
      NullPointerException - ロケールがnullの場合
    • process

      public final String process(StringTemplatePREVIEW stringTemplate)
      フラグメント、フラグメントで見つかったフォーマット仕様、および指定されたStringTemplatePREVIEWオブジェクトの値に基づいてStringを構築します。 このメソッドは、フラグメントから書式文字列を構築し、値を収集し、new Formatter(locale).format(format, values).toString()をレートする場合と同様に式を評価します。

      埋込み式の直前に指定子が付いていない場合、書式に%sが挿入されます。

      定義:
      インタフェースStringTemplate.ProcessorPREVIEW<String,RuntimeException>内のprocess
      パラメータ:
      stringTemplate - StringTemplatePREVIEWインスタンス
      戻り値:
      構築String
      例外:
      IllegalFormatException - 書式指定子に不正な構文が含まれている場合、指定の引数と互換性のない書式指定子、指定子の直後に埋め込まれた式やその他の不正な条件が続いていません。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定の「詳細」の項を参照してください。
      NullPointerException - stringTemplateがnullの場合
      関連項目:
    • linkage

      public MethodHandle linkage(List<String> fragments, MethodType type)
      MethodHandleを作成します。StringTemplatePREVIEWの値とともに指定すると、process(StringTemplate)によって提供される結果と同等の結果が生成されます。 このMethodHandleは、FMTとilkによって、より特殊な結果の構成を実行するために使用されます。 この専門は、StringTemplatePREVIEWのフラグメントおよび値タイプを事前スキャンすることによって行います。

      プロセス・テンプレート式は、プロセッサがStringTemplate.Processor.LinkagePREVIEW型で、FMT (static final FormatProcessor)のように静的定数からフェッチされる場合に特殊化できます。

      その他のFormatProcessorsPREVIEWは、静的finalに格納する場合に特殊化できます。 たとえば、

      FormatProcessor THAI_FMT = FormatProcessor.create(Locale.forLanguageTag("th-TH-u-nu-thai"));
      
      THAI_FMTは、linkage(List, MethodType)を使用して特殊なMethodHandlesを生成するようになりました。 詳細は、process(StringTemplate)を参照してください。

      定義:
      インタフェースStringTemplate.Processor.LinkagePREVIEW内のlinkage
      パラメータ:
      fragments - 文字列テンプレート・フラグメント
      type - メソッド・タイプ。StringTemplateレシーバおよび値タイプを含みます
      戻り値:
      テンプレートに適用されるプロセッサのMethodHandle
      例外:
      IllegalFormatException - 書式指定子に不正な構文が含まれている場合、指定の引数と互換性のない書式指定子、指定子の直後に埋め込まれた式やその他の不正な条件が続いていません。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定の「詳細」の項を参照してください。
      NullPointerException - フラグメントまたはタイプがnullの場合
      関連項目: