java - 在字符串替换方法中使用 CharSequence 作为参数的原因
问题描述
为什么 String 类中的某些方法具有 CharSequence 类型的参数而其他具有 String 类型的参数,是否有一个合乎逻辑的解释?例如:
public String replace(CharSequence target, CharSequence replacement)
和
public boolean startsWith(String prefix)
为什么替换方法不像startsWith方法那样使用String作为参数?
解决方案
为什么 String 类中的某些方法具有 CharSequence 类型的参数而其他具有 String 类型的参数,是否有一个合乎逻辑的解释?
简短的回答:向后兼容性。
CharSequence
在 Java 1.4 中添加。
replace(CharSequence target, CharSequence replacement)
是在 Java 1.5 中添加的,因此它可以使用已经存在的CharSequence
类型。
startsWith(String prefix)
从 Java 1.0 开始就已经存在,所以当时它不能使用不存在的CharSequence
类型,并且不能在 Java 1.4(或更高版本)中修改,因为这会导致向后兼容性问题。
为什么替换方法不像startsWith方法那样使用String作为参数?
所以你可以传递其他类型的实现CharSequence
.
推荐阅读
- python - 我们如何在没有常数项的情况下使用 np.polyfit 来拟合多项式
- apache-spark - Spark 无法读取 avro 文件格式
- javascript - 如何通过更改一个列号字段来更新另一个列号字段
- google-apps-script - 使用谷歌应用脚本的动态依赖下拉列表不起作用 - Google 表格
- r - 从 API 请求中提取 json 内容时出错:错误:解析错误:过早的 EOF?
- c - 我无法在 C 中操作位域
- powerbi - 带有最后值的 3 个月滚动平均值
- spring-batch - 在 AsyncItemProcessor 中设置上下文参数
- ios - 应用程序进入后台后,AVAudioPlayer 停止返回正确的 currentTime
- php - “getimagesize(): SSL operation failed with code 1” 仅在本地 Xampp