在java JDK中String的源码中有方法contentEquals(CharSequence cs)和 boolean contentEquals(StringBuffer sb),可是StringBuffer不是也实现了CharSequence吗,那还要contentEquals(StringBuffer sb)干嘛?
boolean contentEquals(CharSequence cs)
将此字符串与指定的 CharSequence 比较。
boolean contentEquals(StringBuffer sb)
将此字符串与指定的 StringBuffer 比较。
在1.4的时候StringBuffer作为参数应该比较常见 后续更新到1.5加了新参数CharSequence 没有废弃做重载应该是因为。删除旧方法会阻止旧代码使用该方法运行。代码必须重新编译。如果废弃了 1.5之前已经编译的二进制文件就不能运行了。
contentEquals(StringBuffer) 的变化至contentEquals(CharSequence)不会违反契约(Contract)——即使是实现委托(delegate)给新的重载