Non sono sicuro di quale sia la ragione, ma posso fornire un esempio di classe che implementa CharSequence
. È java.nio.CharBuffer
.
In teoria è possibile implementare indexOf()
chiamando in ciclo charAt()
. Ma non funzionerà come l'utente si aspetta. Non possiamo distinguere tra 2 situazioni: il personaggio non c'è ancora e il personaggio non è lì e non ci sarà. Nel secondo caso, indexOf()
dovrebbe restituire -1 per contratto. Nel primo caso dovrebbe attendere fino all'arrivo di tutti i byte. Ma CharBuffer appartiene a non bloccante IO, quindi non può bloccare.
Credo che questo spieghi almeno uno dei possibili motivi.
EDIT:
seguito molto prezioso commento di @Pacerier voglio aggiungere quanto segue. IMHO CharSequence
come interfaccia molto generica che viene utilizzata in diverse circostanze. I più noti implementatori di questa interfaccia sono String
, StringBuffer
e StringBuilder
che detengono l'intero contenuto nella struttura dati che consente l'accesso diretto a qualsiasi carattere. Questo è comunque sbagliato nel caso generale. java.nio.CharBuffer
è un esempio di tale caso.
Quindi, quello che stai chiedendo è: perché 'CharSequence' non ha un metodo' indexOf'? –
StringBuffer e StringBuilder hanno metodi indexOf, anche se ... – Thilo
@Thilo - Qual è il tipo di domande del perché CharSequence non specifica questo comportamento? (E sebbene java.nio.CharBuffer e javax.swing.text.Segment non implementino 'indexOf', potrebbero facilmente.) –