2010-07-26 36 views
8

为什么Integer.toString()方法是使用String.valueOf(int i)实现的,而不是直接使用由String.valueOf(int i)调用的静态方法Integer.toString(int i)Integer.toString()

更新:我有一个太阳(现在Oracle)JDK 1.6.0_12

+0

为什么你担心这样的小事? – polygenelubricants 2010-07-26 14:33:21

+1

当我在公开课中创建一个公共方法时:我想知道为什么。 – 2010-07-26 14:35:51

回答

11

的工作,原因很可能是历史性的。 Java 1.0版本急于尝试满足(被认为是)关闭的机会窗口。在API设计中犯了许多错误。但到了Java 1.1时代,设计人员意识到修复API中的错误可能会破坏现有程序,并疏远开发人员和用户。所以他们选择了不确定的错误(尤其是轻微的不一致)。

这只是其中的一个小小的不一致。它在实践中没有什么区别,因为无论如何JIT编译器都会内联这些调用。

+0

这意味着方法调用将被直接替换为“真实”代码来执行?我在哪里可以获得有关编译器的信息,以了解哪些优化已完成? – 2010-07-26 14:48:30

+0

关于HotSpot编译器/优化器的细节并没有多少发表。但是,如果你真的感兴趣,你可以随时下载并阅读源代码。无论如何,内联过程调用是许多编译器为许多语言执行的标准优化。 – 2010-07-26 14:54:27