我正在阅读 Effective Java 一书,面对以下内容:
考虑使用
contentEquals(StringBuffer)
方法的String 从Java 4开始。在Java 5中,String类配备了重载 采用contentEquals
的{{1}}方法。
您能否解释一下,如果CharSequence
可以替换为contentEquals(StringBuffer)
,那么该方法会被重载?
答案 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版本上生成的二进制文件。