ПредишенСледващото

CharSequence е интерфейс с всички последствия. Под предния капак може да бъде CharBuffer, сегмент, String, StringBuffer, StringBuilder. Или персонализирано внедряване.

За да се разбере следните примери:

метод SoutString показва съдържанието на класа и ред:

Ако искаме да използваме StringBuilder. След това в продължение на които биха се използва методът, ние трябва да използваме SoutString реализация. Тъй като той очаква String:

Добавянето на тези линии и да видим резултата:

Знаем също така, че String и StringBuilder изпълнение интерфейс "CharSequence" и тя ни позволява да напишете следното:

Изводът е, както следва:

Имайте предвид, че във втория случай, методът е бил предаден на StringBuilder.

  • Ние може да разкрием в нашия метод за всички категории, които реализират интерфейса.
  • В метода може да използва методи интерфейс, например дължина ();

И ние можем да в рамките на метод за безопасно извършване на конкретен обект на действието:

Аз не съм експерт по Android, но мисля, че @Barmaley исках да кажа, че ако премина като CharSequence обект String. то ще бъде показано само текст. И ако обектът изпълнява допълнително Spannable. Тогава тя все още е възможно, и боя.

Формално, разбира се CharSequence е интерфейс, но семантична натовареност на CharSequence в Android обикновено се приема, че набор от символи, може да се наложи в бъдеще някои стилове - специално Spannable. добре, например, е възможно да се направи тази част от линията е с различен цвят или шрифт.

Съответно CharSequence има смисъл да се използва, ако се приема, че части на линията трябва да / може да се даде някои специални свойства - това е нещо, което не може да се постигне с помощта на главата String.

Отговорено 12 октомври '15 в 08:45

Изведнъж Spannable същия интерфейс. - Сергей Mitrofanov 12 октомври '15 в 09:46

@SergeyMitrofanov и какво следва след това? Ако сте от категорията на гр-нацистки наклон с Java и да каже :) - Barmaley 12 Октомври '15 в 09:51

CharSequence - е всеки набор от символи, а не непременно immutabelny обект String. Този интерфейс се определя буквално 4 метод. В андроид го прилага различен ред и Builder (String, StringBuilder и т.н.) и за форматиране на текст (калибриран).

Всяко CharSequence може да бъде превърнато в метод низ .toString на (). но това може да бъде преобразуване загуба на информация. Например, ако конвертирате низ форматиран текст (калибриран), след това се отделя от всичко форматирането, но ако се превърне StringBuilder, тя губи възможността за редактиране на тази линия. В допълнение, такава трансформация - това е почти винаги да се създаде нов обект.

По-добре се използва, когато е достатъчно 4 методи CharSequence интерфейс и не се нуждаят от възможностите на String клас или трябва да се запазят свойствата на обекта, преминали в предаването някъде по-далеч. Но трябва да бъдем внимателни. По-специално, по-добре е да не се използва за равенство () метод за сравнение на обекти, тъй като тя не може да се определят или не толкова, колкото искате.

Отговорено 12 октомври '15 в 14:55

Свързани статии

Подкрепете проекта - споделете линка, благодаря!