Android Pie API совместим с Kotlin


Хотя Kotlin совместим с Java, и на самом деле нет необходимости изменять API Java, на которых работает Android, небольшая аннотация может упростить взаимодействие. SDK Android P теперь поддерживает NULL и Kotlin.

Если вы работали с Java или подобными языками, вы знаете об опасности нулевого указателя.
Тони Хоар изобрел нулевые указатели как часть спецификации Algol W еще в 1965 году, но вполне вероятно, что подобные идеи использовались и до этого. Он называет это своей «ошибкой на миллиард долларов». Я думаю, что это немного сложно. Идея нуля и, в частности, нулевого указателя — это просто идея переменной, которая в настоящее время имеет недопустимое значение.
Нулевой указатель — это указатель, который в настоящее время не указывает на объект. Это могло произойти из-за того, что он был инициализирован нулевым значением, но, скорее всего, из-за того, что объект, на который он указывает, был удален. Java поддерживает нулевые указатели, и если вы попытаетесь использовать такой нулевой указатель для доступа к объекту или его свойствам, вы получите исключение NullPointerException, которое является проклятием жизни многих Java-программистов.
Альтернативой проблеме нулевого указателя является передача ответственности за правильность указателей компилятору. Вот что такое типы Kotlin, не допускающие значения NULL. По умолчанию тип Kotlin не допускает значения NULL. То есть они построены так, чтобы не принимать нулевое значение. Компилятор проверяет, что тип, не допускающий значения NULL, инициализирован и никогда не может быть установлен на содержимое другой переменной, которая может иметь значение NULL.
Проблема в том, что нули похожи на вирус. Как только вы вводите в свою программу тип, допускающий значение NULL, они имеют тенденцию распространяться, и вам приходится их проверять, как если бы вы правильно выполнили эту работу в Java. Большая проблема в том, что Kotlin должен взаимодействовать с Android Java API, который определенно допускает значение NULL.
Это означает, что при любом взаимодействии с Java API тип Kotlin обнуляется и, следовательно, становится проблемой. Решение состоит в том, чтобы добавить аннотации, допускающие значение NULL, которые сообщают Kotlin, какие возвращаемые типы практически не допускают значения NULL, т.е. на практике они не могут быть нулевыми, и всегда возвращается указатель на что-либо.
В последнем SDK Android Pie (ранее P) теперь есть аннотации обнуляемости для наиболее часто используемых API. Это делает их использование Kotlin, а на самом деле Java, гораздо более безошибочным.
Одна маленькая странность:
«Обычно нарушения контракта обнуляемости в Kotlin приводят к ошибкам компиляции. Но чтобы гарантировать совместимость недавно аннотированных API с вашим существующим кодом, мы используем внутренний механизм, предоставляемый командой компиляторов Kotlin, чтобы пометить API как недавно аннотированные. Недавно аннотированные API приведет только к предупреждению вместо ошибок от компилятора Kotlin. Вам нужно будет использовать Kotlin 1.2.60 или более позднюю версию «.
Я совершенно не уверен, каков эффект от этого. Означает ли это, что я могу игнорировать присвоение значения, допускающего значение NULL, к параметру, не допускающему значение NULL, потому что предупреждение — это просто предупреждение, а я привык игнорировать предупреждения? Если так, то это нехорошо.
«Чтобы использовать новые аннотированные SDK, все, что вам нужно сделать, это установить Android SDK Platform 28, редакция 6, а затем настроить ваш проект на использование его вместе с последним плагином Kotlin.
Да, это правда, что использовать Kotlin с Android SDK не так просто, как если бы SDK был написан на Kotlin. Как говорится в объявлении:
Поверхность Android SDK API очень велика, и мы пока аннотировали лишь небольшой процент API — осталось еще много работы. В следующих нескольких выпусках Android SDK мы продолжим добавлять аннотации обнуления к существующим API Android, а также следить за тем, чтобы новые API были аннотированы ».
Более радикальным решением было бы написать новые API на Kotlin.
Конечно, реальность такова, что в сегодняшнем программировании для Android мы стремимся к подвижной цели. У нас есть не только языковые сдвиги, но и Android KTX и AndroidX, а также постоянный отток, который представляет собой Android Studio.
Вы могли подумать, что по прошествии такого времени Android немного успокоился — в конце концов, это всего лишь Linux с застрявшим впереди пользовательским интерфейсом …

Майк Джеймс является автором: Руководство программиста по Котлину, ISBN: 978-1871962536; Программирование Android в Котлине: начиная с приложения ISBN: 978-1871962543; и Android-программирование на Java: Начиная с приложения, 3-е издание ISBN: 978-1871962550.


Добавить комментарий