Cela s'applique à la fois à Java SE et à Android, car les contrats sont identiques.
CharSequencene définit pas de contains(CharSequence)méthode. Je n'arrive pas à trouver une raison pour laquelle, et l'inclure serait très utile, évitant d'avoir à appeler CharSequence#toString()pour vérifier une séquence de caractères.
Par exemple, dans Android, les utilisateurs sont obligés d'appeler Editable#toString()pour voir s'il contient une séquence de caractères, bien que des Editableimplémentations CharSequence, qui peuvent être évitées si elles sont CharSequencedéfinies contains(CharSequence).
Quelle est l'idée derrière ce choix de conception? Est-ce un oubli potentiel ou y a-t-il une raison de conception à cela?
containsn'est pas une méthode de mutation, et il ne les méthodes de recherche d'exist (charAt), alors comment cette application ?. En outre, " Parce que ce sont des méthodes par défaut, elles n'imposent pas d'exigences supplémentaires pour les classes implémentant CharSequence. " - Ne pourrait pascontainsêtre implémenté par défaut via l'implreturn to String().contains(...), supprimant l'exigence pour les classes à implémenter?