Il compilatore ha accesso alla stringa di formato E ai tipi e ai parametri richiesti. Quindi presumo che ci sarebbe un modo per indicare i parametri mancanti per i varargs ... anche se solo per un sottoinsieme di casi. C'è qualche modo per eclipse o un altro ide per indicare che i vararg passati potrebbero causare un problema in fase di runtime?Come ottenere string.format per protestare in fase di compilazione
risposta
Sembra che FindBugs possa risolvere il tuo problema. Esistono alcune categorie di avvertenze relative alle stringhe di formattazione.
Il compilatore Java non ha alcuna conoscenza semantica integrata dei parametri StringFormat, quindi non può controllarli al momento della compilazione. Per quello che ne sa, StringFormat è solo un'altra classe e String.format è solo un altro metodo, e la stringa di formato data è solo un'altra stringa come qualsiasi altra.
Ma sì, sento il tuo dolore, avendo incontrato questi stessi problemi negli ultimi due giorni. Quello che avrebbero dovuto fare è renderlo 'meno attento' al numero di parametri, e lasciare solo i marcatori% s non rimossi.
forse il compilatore non posso dire ... vero, ma forse ci sono alcuni strumenti di analisi statica là fuori che lo fanno? – mafalda
bella idea per un miglioramento eclisse, btw. Potrebbe controllare almeno per le stringhe di formato statico e varargs di dimensioni fisse. –
Controlla la mia risposta qui - http://stackoverflow.com/questions/24769455/java-string-format-compile-time-error-checking-and-safer-alternative - è ancora un leggero work in progress –