Cela s'applique à la fois à Java SE et à Android, car les contrats sont identiques.
CharSequence
ne 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 Editable
implémentations CharSequence
, qui peuvent être évitées si elles sont CharSequence
dé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?
contains
n'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?