gpt4 book ai didi

java - 为什么 contentEquals() 方法被重载但没有被替换?

转载 作者:行者123 更新时间:2023-11-30 02:13:15 25 4
gpt4 key购买 nike

我现在正在阅读Effective Java一书,并面临以下问题:

Consider String, which has had a contentEquals(StringBuffer) method since Java 4. In Java 5 String class was outfitted with an overloading of the contentEquals method that takes a CharSequence.

如果 contentEquals(StringBuffer) 可以替换为 contentEquals(CharSequence),你能解释一下为什么该方法会重载吗?

最佳答案

java.lang.String.contentEquals(StringBuffer)java.lang.String.contentEquals(CharSequence) 的更改不会违反契约(Contract) - 即使实现委托(delegate)给较新的重载:return contentEquals((CharSequence)sb);

评论:

 * @since  1.4
*/
public boolean contentEquals(StringBuffer sb) {

* @since 1.5
*/
public boolean contentEquals(CharSequence cs) {

建议可以简单地替换旧方法,因为 StringBuffer 实现了 CharSequence in version 1.4 already ,此 contentEquals(CharSequence) 重载仅在 1.5 中添加。但是,如果刚刚删除 contentEquals(StringBuffer),在 Java v1.4 或更早版本上编译的代码将无法在 1.5+ 上运行。因此,剩下的唯一解释是支持在早于 1.5 的 Java 版本上生成的二进制文件。

关于java - 为什么 contentEquals() 方法被重载但没有被替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49465786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com