今天早些时候我在搞乱字符串和格式化,发现了一个 API 奇怪的地方。
通常当我格式化我使用的字符串时
String.format("mystr %s", 1);
或类似的东西。
现在这个静态方法也可以被这个类的实例化对象访问。下面的代码显示了String.format
静态使用和format
直接从对象使用方法的结果。
@Test
public void test() {
assertEquals("abc 123", String.format("abc %s", 123));
assertEquals("abc 123", "abc".format("abc %s", 123));
assertEquals("def 123", "abc".format("def %s", 123));
}
最后一个 assertEquals() 基本上覆盖了我希望查看格式签名的第一个“abc”字符串。
我是否错过了使用实例化对象中的静态方法的一些时髦用法。还是因为静态 String.format() 也可以访问 String 的实例化对象,所以它只是可见的?换句话说,API 奇怪/错误。