首页 > 解决方案 > 在字符串替换方法中使用 CharSequence 作为参数的原因

问题描述

为什么 String 类中的某些方法具有 CharSequence 类型的参数而其他具有 String 类型的参数,是否有一个合乎逻辑的解释?例如:

public String replace(CharSequence target, CharSequence replacement)

public boolean startsWith(String prefix)

为什么替换方法不像startsWith方法那样使用String作为参数?

标签: java

解决方案


为什么 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.


推荐阅读