No estoy seguro de cuál es el motivo, pero puedo dar un ejemplo de la clase que implementa CharSequence
. Es java.nio.CharBuffer
.
Teóricamente podría implementar indexOf()
llamando al charAt()
en bucle. Pero no funcionará como espera el usuario. No podemos distinguir entre 2 situaciones: el personaje aún no está allí y el personaje no está allí y no estará allí. En el segundo caso, indexOf()
debe devolver -1 por contrato. En el primer caso, debería esperar hasta que lleguen todos los bytes. Pero CharBuffer pertenece a sin bloqueo IO, por lo que no puede bloquear.
Creo que esto explica al menos una de las posibles razones.
EDIT:
Siguiendo muy valiosa comentario de @Pacerier quiero añadir lo siguiente. IMHO CharSequence
como una interfaz muy genérica que se utiliza en diferentes circunstancias. Los implementadores más conocidos de esta interfaz son String
, StringBuffer
y StringBuilder
que contienen todo el contenido en la estructura de datos que permite el acceso directo a cualquier carácter. Sin embargo, esto está mal en el caso general. java.nio.CharBuffer
es un ejemplo de tal caso.
Entonces, lo que estás preguntando es: ¿Por qué 'CharSequence' no tiene un método' indexOf'? –
StringBuffer y StringBuilder tienen métodos indexOf, aunque ... – Thilo
@Thilo - ¿Qué tipo de pregunta es por qué CharSequence no especifica ese comportamiento? (Y aunque java.nio.CharBuffer y javax.swing.text.Segment no implementan 'indexOf', podrían hacerlo fácilmente) –