我想知道为什么Java5 及以上版本提供了使用 String 类中的静态方法的 printf 样式格式化程序,如下所示:
public static String format(String format, Object... args)
代替
public String format(Object... args)
这样我们就可以写"%02d".format(5)
to get 05
代替String.format("%02d", 5)
.
我想如果我可以修改 String 类,我可以添加以下内容:
public String format(Object... args) {
return format(this, args)
}
得到相同的结果。
我发现在C#中,也使用静态方法来代替实例方法。
我想知道他们为什么决定这样做,但我没有做出解释。实例方法trim
and substring
返回一个新的字符串实例,所以他们应该做同样的事情format
.
此外,DateFormat
类也使用这个:
public final String format(Date date)
用于格式化日期。因此,如果我们将 DateFormat 的实例视为格式化程序,那么 String 的实例也可以用作格式化程序。
有任何想法吗?
Perhaps "%02d".format(5)
似乎暗示该物体format
正在调用的方法是格式字符串。
在这种情况下,格式字符串恰好也是String
,因此进一步推动这一点,人们可能会争辩说,所有String
s 是格式字符串.
也许可以通过说静态方法来避免这种情况String
类可用于格式化字符串,而不是对所有内容进行一些隐式声明String
一般而言。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)