好奇心から、本当に大きな文字列を作成しようとしました。Formatter
を超える幅の仕様でクラスがチョークすることが判明しましたInteger.MAX_VALUE
。
// Produces an empty string. (2147483648 = Integer.MAX_VALUE + 1)
String.format("%2147483648s", "");
それで、実際に仕様どおりであることを確認するために出発しました。しかし、それが言うすべては
書式指定子に無効な値またはサポートされていない幅または精度が含まれている場合、それぞれ IllegalFormatWidthException または IllegalFormatPrecisionException がスローされます。
したがって、私の意見では、正しい動作はIllegalFormatWidthException
.
このバグ (?) はどこかに文書化されていますか? (そうでない場合は、報告に行きます。)
-
また、幅の前に a を付けると (出力を左揃えにするため)、次のようになることに注意してください。
String.format("%-2147483648s", "");
それは実際に a をスローしますMissingFormatWidthException
(私が見たところ、これは正しい動作のようです)。
(OpenJDK バージョン 1.6.0_20 を使用しています。)