2
有这样的代码:CharSequence的equals()方法不能很好地工作
if (cs.equals(keywordUnderProcess)) {
} else {
}
两个cs
和keywordUnderProcess
是CharSequence
,具有价值star
,但其他情况下将执行。为什么? equals
检查值,不是吗?
有这样的代码:CharSequence的equals()方法不能很好地工作
if (cs.equals(keywordUnderProcess)) {
} else {
}
两个cs
和keywordUnderProcess
是CharSequence
,具有价值star
,但其他情况下将执行。为什么? equals
检查值,不是吗?
如果你读了CharSequence接口的Javadoc页,它说,为equals
的行为是不确定的:
此接口不修改的总承包equals和hashCode方法。因此,比较实现CharSequence的两个对象的结果通常是未定义的。每个对象都可以由不同的类来实现,并且不能保证每个类都能够测试其实例与其他实例的相等性。因此,将任意CharSequence实例用作集中的元素或映射中的键是不合适的。
不要责怪有一个抽象方法的实现不好的接口(除非它有一个默认的方法,你怪)。一般来说,不要责怪标准的API。如果“效果不好”,问题通常在于使用它,而不是API本身。 –
我不确定你是如何得到我责怪界面的印象。我只是说明了开发人员从文档中注意到的一个事实。 –
反正你知道一个简单的解决办法比较'CharSequence's?或转换为'String',并使用'String'的'equal'? –