拥有此代码:
if (cs.equals(keywordUnderProcess)) {
} else {
}
cs
和keywordUnderProcess
都是CharSequence
,其值为star
,但是其他情况会执行。为什么? equals
检查值,不是吗?
答案 0 :(得分:4)
如果您阅读CharSequence界面的javadoc页面,则表示equals
的行为未定义:
此接口不会细化equals和hashCode方法的常规协定。因此,比较实现CharSequence的两个对象的结果通常是未定义的。每个对象可以由不同的类实现,并且不能保证每个类能够测试其实例与另一个的实例是否相等。因此,将任意CharSequence实例用作集合中的元素或映射中的键是不合适的。