2011-01-17 3 views
8

У компилятора есть доступ к строке формата И требуемым типам и параметрам. Поэтому я предполагаю, что какой-то способ указать отсутствующие параметры для varargs ... даже если бы это было только для подмножества случаев. Есть ли какое-то время для затмения или другого идеала, указывающего на то, что переданные varargs могут вызвать проблему во время выполнения?Как получить string.format, чтобы жаловаться во время компиляции

+0

Хорошая идея для улучшения затмение, кстати. Он мог бы проверять хотя бы для строк статического формата и varargs с фиксированным размером. –

+0

Посмотрите мой ответ здесь - http://stackoverflow.com/questions/24769455/java-string-format-compile-time-error-checking-and-safer-alternative - все еще небольшая работа в процессе –

ответ

1

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

Но, я чувствую вашу боль, столкнувшись с этими же проблемами за последние пару дней. То, что они должны были сделать, это сделать «менее осторожным» относительно количества параметров и просто оставить неизменяемые маркеры% s.

+0

возможно, компилятор не может сказать ... правда, но, может быть, есть некоторые инструменты статического анализа, которые делают это? – mafalda