有没有一个类型安全的替代方案来代替String.format(...)?

8

为了编写错误、日志或其他 String 信息,可以使用 String.format(...) 方法。不幸的是,这种方法没有类型安全性,因此以下源代码会抛出 IllegalFormatException

String s = String.format("My message has %d characters !", "30");

除了StringBuilder类,是否还有其他组成这样的消息的替代方法?

我个人认为,使用StringBuilder实例组成的消息会变得更难阅读。


2
考虑使用静态分析工具,如Findbugs - McDowell
使用Scala,您可以使用宏来实现这一点:http://docs.scala-lang.org/overviews/macros/overview.html#a_complete_example,尽管它可能无法从Java中工作。 - Gábor Bakos
请查看我的答案,链接在这里 - http://stackoverflow.com/questions/24769455/java-string-format-compile-time-error-checking-and-safer-alternative - 它仍然是一个正在进行中的项目。 - Christopher Rucinski
1个回答

7

使用只有%s格式说明符的String.format()方法实际上是类型安全的(类型不透明可能更准确),因为每个对象都将实现toString()方法,甚至空对象也可以处理。

当然,如果您没有实现toString()方法,则无法对字符串的实际格式进行控制...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接