我看不出制作 String.indexOf
有任何缺点部分界面CharSequence
.好处是其他类(如 StringBuffer 或 StringBuilder)也需要实现 indexOf 方法。
那么 indexOf
应该只是 String
的一部分有什么设计上的原因吗?
谢谢。
最佳答案
我不确定这是什么原因,但我可以举一个实现 CharSequence
的类的示例。它是 java.nio.CharBuffer
。
理论上可以通过循环调用charAt()
来实现indexOf()
。但它不会像用户期望的那样工作。我们无法区分两种情况:性格还没有和性格不存在也不会存在。在第二种情况下,indexOf()
应该按约定返回 -1。在第一种情况下,它应该等到所有字节都到达。但是CharBuffer属于非阻塞IO,所以不会阻塞。
我相信这至少解释了一个可能的原因。
编辑:
在@Pacerier 发表非常有值(value)的评论后,我想添加以下内容。
恕我直言,CharSequence
是一个非常通用的接口(interface),可在不同情况下使用。此接口(interface)最著名的实现者是 String
、StringBuffer
和 StringBuilder
,它们将所有内容保存在允许直接访问任何字符的数据结构中.但是在一般情况下这是错误的。 java.nio.CharBuffer
就是这种情况的一个例子。
关于java - 为什么方法 String.indexOf 不是接口(interface) CharSequence 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396177/