我今天早些时候正在弄乱字符串和格式化,并且发现了API奇怪。
通常在我使用
格式化字符串时String.format("mystr %s", 1);
或类似的东西。
现在,此类static method也可以被此类的实例化对象访问。下面的代码显示了静态使用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奇怪/错误。
答案 0 :(得分:3)
也可以在类的实例上调用所有静态方法。
通常不建议使用此功能(许多工具都会跟踪它),但这不是一个错误。
答案 1 :(得分:0)
静态方法总是可以通过类实例(对象)访问,String.format
没什么特别的。