java - 为什么方法 String.indexOf 不是接口(interface) CharSequence 的一部分?

标签 java string indexof charsequence

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

那么 indexOf 应该只是 String 的一部分有什么设计上的原因吗?

谢谢。

最佳答案

我不确定这是什么原因,但我可以举一个实现 CharSequence 的类的示例。它是 java.nio.CharBuffer

理论上可以通过循环调用charAt()来实现indexOf()。但它不会像用户期望的那样工作。我们无法区分两种情况:性格还没有和性格不存在也不会存在。在第二种情况下,indexOf() 应该按约定返回 -1。在第一种情况下,它应该等到所有字节都到达。但是CharBuffer属于非阻塞IO,所以不会阻塞。

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

编辑:

在@Pacerier 发表非常有值(value)的评论后,我想添加以下内容。 恕我直言,CharSequence 是一个非常通用的接口(interface),可在不同情况下使用。此接口(interface)最著名的实现者是 StringStringBufferStringBuilder,它们将所有内容保存在允许直接访问任何字符的数据结构中.但是在一般情况下这是错误的。 java.nio.CharBuffer 就是这种情况的一个例子。

关于java - 为什么方法 String.indexOf 不是接口(interface) CharSequence 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396177/

相关文章:

java - 使用 spring-DM 扩展器进行 OSGi 日志记录不进行日志记录

java - 在 catch 或初始化中将空值处理为默认值

java - 从数据库中获取值后如何清除 jComboBox

c++ - 如何通过地址传递 char 指针以接受 char**?

python - 打印用户输入的 "cascade"个字符?

javascript - JQuery index() - 哪条路?

javascript - 在 JavaScript 位置查找下一个单词的位置

Java Spring启动: Not able to access @Bean defined in @Configuration

java - 使用 for 循环打印长度为 'n' 的二进制数 'n'

c# - IndexOf 找不到列表中的最后一个元素