valueOfcopyValueOf有什么区别。我查看了GrepCode,却发现两者都返回完全相同的东西。

copyValueOf:

参数:
数据字符数组。

返回:
一个字符串,其中包含字符数组的字符。

公共静态字符串copyValueOf(char data []){
返回新的String(data);
}

值:

返回char数组参数的字符串表示形式。字符数组的内容被复制;字符数组的后续修改不会影响返回的字符串。

参数:数据字符数组。

返回:
一个字符串,其中包含字符数组的字符。

公共静态字符串valueOf(char data []){
返回新的String(data);
}

因此,如果两者都做同一件事,那么为什么不弃用一个呢?

最佳答案

正如其他人指出的那样:

  • 这两个方法是等效的。
  • javadocs明确声明这两种方法是等效的。 copyValueOf显然会向读者指出(轻度)首选valueOf方法。
  • 两个版本之间没有性能差异。实现是相同的。
  • 弃用一种或另一种方法会适得其反,因为它会提示人们“修复”未破坏的代码。 (可以说)那是浪费时间,这会使很多人烦恼。
  • 删除一个或其他方法会破坏向后兼容性……这没有充分的理由。那真的会让很多人烦恼。

  • 唯一的另一个问题是为什么没有注释将方法标记为“过时”。我认为答案是,使用过期的API方法并不重要。当然,对于Java团队来说,实现这样一种机制并没有多大的作用……然后花大量时间确定某某API是否“过时”以保证进行标记等。(大多数人们不希望Java团队在这些事情上浪费时间。我们希望他们花时间在对Java的改进上,这些改进实际上是有实际意义的。)

    解决此问题的更合适方法是使某人增强3rd-party的某些样式检查器或错误检查器工具,以标记使用(所谓的)过时的方法。显然这不是Oracle的问题...但是,如果您(@StarCoder)确实对此感到担心,则可以解决此问题。

    07-28 03:30