Я не уверен, что является причиной этого, но я могу привести пример класса, который реализует CharSequence
.Это java.nio.CharBuffer
.
Теоретически он может реализовать indexOf()
, вызывая charAt()
в цикле.Но это не будет работать так, как ожидает пользователь.Мы не можем различить 2 ситуации: персонажа еще нет, а персонажа нет и не будет.Во втором случае indexOf()
должен вернуть -1 по контракту.В первом случае он должен ждать, пока все байты не поступят.Но CharBuffer принадлежит к неблокирующему IO , поэтому он не может блокировать.
Я полагаю, это объясняет, по крайней мере, одну из возможных причин.
РЕДАКТИРОВАТЬ:
После очень ценного комментария @Pacerier я хочу добавить следующее.ИМХО CharSequence
как очень общий интерфейс, который используется в разных обстоятельствах.Наиболее известными разработчиками этого интерфейса являются String
, StringBuffer
и StringBuilder
, которые содержат весь контент в структуре данных, что обеспечивает прямой доступ к любому символу.Это, однако, неправильно в общем случае.java.nio.CharBuffer
является примером такого случая.