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

时间:2018-03-24 14:24:10

标签: java

我正在阅读 Effective Java 一书,面对以下内容:

  

考虑使用contentEquals(StringBuffer)方法的String   从Java 4开始。在Java 5中,String类配备了重载   采用contentEquals的{​​{1}}方法。

您能否解释一下,如果CharSequence可以替换为contentEquals(StringBuffer),那么该方法会被重载?

1 个答案:

答案 0 :(得分:2)

java.lang.String.contentEquals(StringBuffer)java.lang.String.contentEquals(CharSequence)的更改不会破坏合同 - 即使是实施代表更新的重载: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版本上生成的二进制文件。