valueOf和copyValueOf有什么区别.我看了GrepCode,却发现两者都返回完全相同的东西.
copyValueOf:
Parameters:
data the character array.
Returns:
a String that contains the characters of the character array.
public static String copyValueOf(char data[]) {
return new String(data);
}
的价值:
Returns the string representation of the char array argument. The contents of the character array are copied; subsequent modification of the character array does not affect the returned string.
Parameters: data the character array.
Returns:
a String that contains the characters of the character array.
public static String valueOf(char data[]) {
return new String(data);
}
所以,如果两者都做同样的事情,那么为什么一个人不被弃用呢?
解决方法:
正如其他人指出的那样:
>这两种方法是等价的.
> javadocs明确指出这两种方法是等价的.并且copyValueOf清楚地将读者指向(温和)首选的valueOf方法.
>两个版本之间没有性能差异.实现是相同的.
>弃用一种或另一种方法会适得其反,因为它会促使人们“修复”未破坏的代码.这(可以说)是浪费时间,它会惹恼很多人.
>删除一种或其他方法会破坏向后兼容性……没有充分的理由.这真的会让很多人烦恼.
唯一的另一个问题是为什么没有注释将方法标记为“过时”.我认为答案就是如果你使用过时的API方法并不重要.当然,Java团队实现这样的机制并不重要……然后花费大量时间来判断这样一个API是否“过时”以保证标记等等.人们不希望Java团队在这些事情上浪费时间.我们希望他们花时间来实现对Java的改进,这实际上会带来真正的改变.)
处理此问题的更合适的方法是,有人可以增强第三方某些样式检查器或错误检查工具来标记(所谓的)过时方法的使用.这显然不是甲骨文的问题……但是如果你(@StarCoder)真正关心这个问题,你可以把它变成你的问题.
标签:java,string,value-of
来源: https://codeday.me/bug/20190522/1153326.html