当前位置: 首页 > 知识库问答 >
问题:

Java:valueOf vs copyValueOf

胡劲
2023-03-14

valueofcopyvalueof之间的区别是什么。我查看了GrepCode,却发现两者返回的是完全相同的东西。

CopyValueOf:

参数:数据字符数组。

返回:包含字符数组的字符的字符串。

公共静态字符串copyValueOf(char data[]){return new String(data);}

值:

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

参数:数据字符数组。

返回:包含字符数组的字符的字符串。

public static String valueOf(char data[]){return new String(data);}

如果两者都做同样的事情,那为什么一个不被否决呢?

共有1个答案

朱宇航
2023-03-14

正如其他人所指出的:

  • 这两种方法是等价的。
  • javadocs明确声明这两种方法是等价的。而CopyValueOf则清楚地将读者指向(温和地)首选的ValueOf方法。
  • 两个版本之间没有性能差异。实现是相同的。
  • 不推荐一种或另一种方法会产生反效果,因为它会促使人们“修复”未损坏的代码。这(可以说)是浪费时间,而且会惹恼很多人。
  • 删除一个或另一个方法会破坏向后兼容性...没有什么好的理由。那真的会惹恼很多人。

唯一的另一个问题是为什么没有一个注释来标记一个方法为“out of date”。我认为对此的答案是,如果您使用的API方法已经过时,这并不重要。当然,对Java团队来说,实现这样一个机制并不重要……然后花很多时间来决定这样一个API是否“过时”到需要标记等等。

(大多数人不希望Java团队把时间浪费在这样的事情上。我们更希望他们把时间花在对Java的改进上,这将对程序性能和程序员生产力产生真正的影响。)

处理这个问题的一个更合适的方法是编写或增强第三方的样式检查器或bug检查器工具来标记(所谓的)过时方法的使用。这显然不是Oracle的问题,但如果您(亲爱的读者)真的关心这一点,您可以将其作为您的问题。

 类似资料:

相关问答

相关文章

相关阅读