gpt4 book ai didi

java - 为什么 String 的 format(Object... args) 被定义为静态方法?

转载 作者:IT老高 更新时间:2023-10-28 20:34:30 26 4
gpt4 key购买 nike

我想知道为什么 Java 5 及更高版本使用 String 类中的静态方法提供了一个 printf 样式的格式化程序,如下所示:

public static String format(String format, Object... args)

而不是

public String format(Object... args)

这样我们就可以编写 "%02d".format(5) 来获取 05 而不是 String.format("%02d", 5)

我想如果我可以修改 String 类,我可以添加这个:

public String format(Object... args) {
return format(this, args)
}

得到相同的结果。

我发现在C#中,也使用了静态方法而不是实例方法。

我想知道他们为什么决定这样做,但我没有做出解释。实例方法 trimsubstring 返回一个新的字符串实例,所以它们应该对 format 做同样的事情。

此外,DateFormat 类也使用这个:

public final String format(Date date)

用于格式化日期。因此,如果我们将 DateFormat 的实例视为格式化程序,则 String 的实例也可以用作格式化程序。

有什么想法吗?

最佳答案

也许 "%02d".format(5) 似乎暗示正在调用 format 方法的对象是一个格式字符串。

在这种情况下,格式字符串恰好也是一个 String,因此进一步说明这一点,人们可能会争辩说所有 String 都是格式字符串

这可以通过说 String 类中的静态方法可用于格式化字符串来避免这种情况,而不是对所有 String 进行一些隐式声明一般。

关于java - 为什么 String 的 format(Object... args) 被定义为静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com