Dotyczy to zarówno Java SE, jak i Androida, ponieważ umowy są identyczne.
CharSequence
nie definiuje contains(CharSequence)
metody. Wydaje mi się, że nie mogę znaleźć przyczyny, a włączenie tego byłoby całkiem przydatne, zapobiegając potrzebie dzwonienia w CharSequence#toString()
celu sprawdzenia sekwencji znaków.
Na przykład w Androidzie użytkownicy są zmuszeni zadzwonić, Editable#toString()
aby sprawdzić, czy zawiera sekwencję znaków, choć Editable
implementuje CharSequence
, których można uniknąć, jeśli zostaną CharSequence
zdefiniowane contains(CharSequence)
.
Jaki jest pomysł na wybór tego projektu? Czy jest to potencjalny nadzór, czy może ma to uzasadnienie projektowe?
contains
nie jest to metoda mutacja, i nie ma metody przeszukiwanie istnieje (charAt
), tak jak to się ma ?. Ponadto „ Ponieważ są to metody domyślne, nie nakładają dodatkowych wymagań na klasy implementujące CharSequence. ” - Czy niecontains
można zaimplementować domyślnie za pośrednictwem implreturn to String().contains(...)
, usuwając wymóg implementacji klas?