Из любопытства я попытался создать действительно большую строку.Оказалось, что дроссели класса Formatter
при спецификациях ширины, превышающих Integer.MAX_VALUE
:
// Produces an empty string. (2147483648 = Integer.MAX_VALUE + 1)
String.format("%2147483648s", "");
, поэтому я пошел, чтобы убедиться, что это действительно соответствует спецификации.Но все, что он говорит, это
Если спецификатор формата содержит ширину или точность с недопустимым значением или иным образом не поддерживается, то соответственно будет выброшено исключение IllegalFormatWidthException или IllegalFormatPrecisionException.
Так что, по моему мнению, правильное поведение было бы бросить IllegalFormatWidthException
.
Документирована ли эта ошибка (?) Где-нибудь?(Если нет, я пойду сообщать об этом.)
Также следует отметить, что если поставить ширину -
перед шириной (чтобы выровнять вывод по левому краю):
String.format("%-2147483648s", "");
это действительно выдает MissingFormatWidthException
(что, на мой взгляд, кажется правильным поведением).
(я использую OpenJDK версии 1.6.0_20.)