valueOf
和copyValueOf
之间有什么区别?我查看了GrepCode,发现两者都返回完全相同的东西。
copyValueOf:
参数: 数据字符数组。
返回: 包含字符数组字符的字符串。
public static String copyValueOf(char data []){ return new String(data); }
的valueOf:
返回char数组参数的字符串表示形式。复制字符数组的内容;后续修改字符数组不会影响返回的字符串。
参数:数据字符数组。
返回: 包含字符数组字符的字符串。
public static String valueOf(char data []){ return new String(data); }
所以,如果两者都做同样的事情,那么为什么一个人不被弃用?
答案 0 :(得分:2)
正如其他人所指出的那样:
copyValueOf
清楚地指出了(温和)首选的valueOf
方法。唯一的另一个问题是为什么没有注释将方法标记为"过时"。我认为答案就是如果你使用过时的API方法并不重要。当然,Java团队实现这样的机制并不重要......然后花费大量时间来判断这样的API是否已经过时了#34;保证标记等等(大多数人不希望Java团队在这些事情上浪费时间。我们希望他们花时间来实现对Java的改进,这实际上会产生真正的改变。)
处理此问题的更合适的方法是,有人可以增强第三方某些样式检查器或错误检查工具来标记(所谓的)过时方法的使用。这显然不是Oracle的问题......但如果您(@StarCoder)真的关心这个问题,那么您可以将其作为 问题。
答案 1 :(得分:1)
注释@Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它很危险,或者因为存在更好的替代方案。在未弃用的代码(Annotation Type Deprecated)中使用或覆盖已弃用的程序元素时,编译器会发出警告。
这两种方法字面上做同样的事情;这意味着这两种方法都不危险或更好。这也许是他们不愿意弃用这两种方法的原因。
答案 2 :(得分:1)
这两种方法都有相同的用途,但它们的内部实现略有不同(根据String.java
中的评论 - 较旧的实现):
copyValueOf(char data[])
返回与指定字符数组等效的字符串。它会创建一个新数组并将字符复制到其中。
valueOf(char data[])
返回与指定字符数组等效的字符串。使用原始数组作为字符串的主体(即它没有 将其复制到新数组中。
旧版本在其代码中具有redudndency。但在较新版本的Java中,实现方式相同。提供较旧的方法,以便不了解新版本的旧程序员可以使用它。