为什么没有方法String.indexOf接口CharSequence的一部分?

hal*_*lex 8 java string indexof charsequence

我看不出制作String.indexOf界面的任何缺点CharSequence.好处是其他类如StringBuffer或StringBuilder也需要实现indexOf方法.

那么有什么设计理由indexOf应该只是其中的一部分String吗?

谢谢.

Ale*_*exR 8

我不知道是什么原因,但我可以给出一个实现类的例子CharSequence.是的java.nio.CharBuffer.

从理论上讲,它可以indexOf()通过调用charAt()循环来实现.但它不会像用户期望的那样工作.我们无法区分两种情况:角色还没有,角色不存在而且不存在.在第二种情况下,indexOf()应通过合同返回-1.在第一种情况下,它应该等到所有字节到达.但CharBuffer属于非阻塞IO,因此无法阻止.

我相信这至少解释了其中一个可能的原因.

编辑:

遵循@Pacerier非常有价值的评论我想添加以下内容.恕我直言CharSequence作为一个非常通用的接口,用于不同的情况.此接口最知名的实现者是String,StringBuffer并且StringBuilder将整个内容保存在允许直接访问任何字符的数据结构中.然而,这在一般情况下是错误的.java.nio.CharBuffer就是这种情况的一个例子.