Нативная разработка мобильных приложений



Download 3,69 Mb.
Pdf ko'rish
bet138/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   134   135   136   137   138   139   140   141   ...   228
Bog'liq
Нативная разработка мобильных приложений

ч
то
 
мы
 
узнали
В Android и iOS используются удивительно похожие подходы к сериализации 
и десериализации данных в такие форматы, как XML и JSON. Существуют так
-
же аналогичные способы сериализации объектов Java, Kotlin или Swift в соб
-
ственный формат платформы. Несмотря на различия в языке и структурах, обе 
платформы упрощают передачу данных.
В следующей главе мы затронем приемы расширения базовых объектов 
инф раструктуры (и других объектов), позволяющие добавлять новые возмож
-
ности. Давайте посмотрим!


Глава 
13
Расширения
Иногда функциональности, предлагаемой системами Android и iOS или сто
-
ронними библиотеками, оказывается недостаточно. Конечно, можно создать 
свои подклассы, но это не всегда возможно.
К счастью, обе платформы имеют средства, позволяющие расширять воз
-
можности существующих объектов.
з
адачи
В этой главе вы узнаете, как добавлять новые функциональные возможности 
в существующие API.
A
ndroid
Повсюду в этой книге в качестве языка по умолчанию для разработки 
Android-приложений мы использовали Java. И действительно, подавляющее 
большинство программ для Android пишется на языке Java. Но теперь мы 
должны особо отметить, что в Android Framework только Kotlin поддерживает 
возможность расширения существующих API. Что это значит? Под термином 
«расширение» в данном случае мы понимаем «изменение существующих или 
добавление новых функциональных возможностей в любой класс». Однако 
на языке Kotlin можно писать расширения для классов на Java и успешно 
пользоваться ими!
Добавление новых возможностей в существующие API
Если в программном коде на Java импортировать стороннюю библиотеку 
с компонентом 
CalendarPicker
, вы фактически будете ограничены общедо
-
ступным API, который предлагает эта библиотека. Конечно, можно изменить 
исходный код компонента, но в результате вы получите компонент 
Calendar­
Picker
, который будет экземпляром совсем другого класса, отличного от ори
-
гинала. Также можно определить подкласс 
CalendarPicker
, но и в этом случае 
вы получите совершенно другой класс. В Java нет возможности дополнить или 
изменить функциональность существующего класса 
CalendarPicker
.


208

Расширения
В Kotlin дело обстоит иначе. Этот язык программирования позволит не 
только добавить новый метод в 
CalendarPicker
, который будет доступен всем 
экземплярам 
CalendarPicker
, но и расширить возможности классов в стандарт
-
ной библиотеке, таких как 
LinkedList
, и даже обобщенных классов, таких как 
HashSet
. На самом деле в Kotlin можно расширить даже класс 
Any
и тем 
самым добавить новые возможности во все его экземпляры. Вот классический 
пример расширения на Kotlin:
fun Any?.toString(): String {
if (this == null) {
return "null"
}
return toString()
}
Этот код на Kotlin добавляет поддержку оператора 
?
в 
тело
метода 
Object.
toString
. Включив этот код в свой проект, вы сможете без опаски вызвать метод 
toString
для любого объекта; если объект окажется пустой ссылкой 
null
, вместо 
NullPointerException
вы получите строку 
"null"
. И это здорово!
Расширения можно добавлять в любом месте, в любом пакете, где только по
-
желаете (лишь бы это был файл на Kotlin в каталоге 
src
). Например, щелкните 
правой кнопкой мыши на любом пакете в своем проекте, выберите в контекст
-
ном меню пункт 
New > Kotlin File/Class
(Создать > Файл/Класс на Kotlin) и дайте 
файлу любое имя, например «extensions» (Android Studio автоматически до
-
бавит расширение «.kt» и отобразит файл в списке со значком, указывающим, 
что это файл на Kotlin).
Вы можете добавить в этот файл несколько функций-расширений или соз
-
дать несколько аналогичных файлов, и все эти расширения будут доступны из 
любого класса на Kotlin в вашем проекте. Допустим, вы добавили следующий 
вспомогательный метод в класс 
String
:
fun String.from(start:String): String {
val index = indexOf(start) + start.length
return substring(index)
}
После этого в любом классе на Kotlin вы сможете вызвать его и получить 
ожидаемый результат:
val original = "Hello world!"
val modified = original.from("Hello")
Log.d("MyTag", modified)
За более подробной информацией о расширениях в Kotlin обращайтесь к до
-
кументации разработчика (
https://oreil.ly/oGVHb
).

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   134   135   136   137   138   139   140   141   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish