Компилятор Java не имеет встроенных семантических знаний о параметрах StringFormat, поэтому он не может проверять их во время компиляции.Всем известно, что StringFormat - это просто еще один класс, а String.format - это просто еще один метод, и данная строка формата - это просто другая строка, как любая другая.
Но да, я чувствую вашу боль, когда сталкиваюсь с этимите же проблемы в последние пару дней.То, что они должны были сделать, - это сделать его «менее осторожным» в отношении количества параметров и просто оставить конечные маркеры% s без замены.