Java CharSequence equals()无法正常工作
有以下代码:Java CharSequence equals()无法正常工作,java,string,character,Java,String,Character,有以下代码: if (cs.equals(keywordUnderProcess)) { } else { } cs和keywordundprocess都是CharSequence,值都是star,但将执行else情况。为什么?equals检查值,不是吗 如果您阅读接口的javadoc页面,它会说equals的行为未定义: 此接口不完善equals和hashCode方法的一般约定。因此,比较实现CharSequence的两个对象的结果通常是未定义的。每个对象可以由不同的类实现,并且不能保
if (cs.equals(keywordUnderProcess)) {
} else {
}
cs
和keywordundprocess
都是CharSequence
,值都是star
,但将执行else情况。为什么?equals
检查值,不是吗
如果您阅读接口的javadoc页面,它会说
equals
的行为未定义:
此接口不完善equals和hashCode方法的一般约定。因此,比较实现CharSequence的两个对象的结果通常是未定义的。每个对象可以由不同的类实现,并且不能保证每个类都能够测试其实例是否与其他类的实例相等。因此,将任意CharSequence实例用作集合中的元素或映射中的键是不合适的
不要因为抽象方法的实现不好而责怪接口(除非它有一个您责怪的默认方法)。一般来说,不要责怪标准API。如果它“不能很好地工作”,问题通常在于它的使用,而不是API本身。我不知道你是如何得到我责备接口的印象的。我只是在陈述一个开发人员从文档中注意到的事实。无论如何,您知道一个比较
CharSequence
s的简单方法吗?或者转换为字符串
,并使用字符串
的相等
?是的,这是解决方法。给他们每个人打电话。