Pull to refresh

Comments 25

UFO just landed and posted this here
Отсюда:
So we're thrilled to make Kotlin an official language on Android.

Официальный. Да, наряду с Java и С++, но в статье нигде и не говорится, что единственный официальный.

А что такое официальный? Я смотрю Firebase — Java есть, Kotlin нет. Надо писать на Kotlin используя вставка на яве?

У нас в проекте тоже используется Firebase. Подключаете его в Gradle-скрипте и спокойно используете из Kotlin-классов.
В статье же упоминалось — полностью совместимый с JVM и Java язык, то есть можно напрямую работать с API для Java из котлина, следовательно, проблем с Firebase нет и не будет.
Ну, написали, что нужно несколько месяцев переучивать. Видать, еще ничего не накодили хорошего.
По-моему в статье как раз и описываются возможные проблемы, с которыми может столкнуться человек, решивший писать на Kotlin. Разве нет? А вы о чём ожидали прочитать в статье с таким названием?
аннотации Jackson некорректно работают с Kotlin и необходимо дополнительно подключать отдельный jackson-module-kotlin модуль для совместимости

Можно и без jackson-module-kotlin, только тогда чисто Kotlin специфичные вещи работать не будут, что вполне логично.
… хорошо подумайте о том, стоит ли писать общие части на Kotlin.

Вы серьезно? Основное, чем вы аргументируете свое заключение, это internal. Который и не так часто используется.
Вот очередная статья из серии «hello word» на котлин, которые регулярно появляются на хабре не первый год.
Когда уже можно будет почитать на хабре уже и что нибудь более серьезное? -Написать хелло ворд уже все успели.
Хотелось бы более критической, профессиональной и независимой оценки, что в котлине хорошо, что — не очень. Идеальных языков не бывает. А щенячий восторг статей намекает на недостаток опыта и профессионализма у авторов.
Вот как живет котлин в больших проектах, какие фремворки используются, библиотеки?
Общие утверждения типа «все как и в джава» бесполезны, т.к. во-первых для этого надо знать java, а во-вторых, там далеко не все так очевидно, как утверждают всякие «популяризаторы» котлина, весь опыт которых заключается в прочтении базовой документации по языку.
У нас райдер на котлин написан =) Та часть, которая работает поверх идеи, т.е. фронтенд. Там много кода.
Так вы бы поделились с публикой о подводных камнях непосредственно от авторов. Я думаю, все бы с удовольствием почитали! :)
Лично мне нечем делиться. Оно просто работает =) Тем более я учил котлин не после java а после c#.
Находили пару раз баги в компиляторе, также репортили их в команду котлина, так же ждали следующего минорного релиза с фиксами… Но последнее время проблем нету у нас.

Вот, трезвый взгляд на ситуацию. Я тоже постоянно натыкаюсь на недоработки и баги тулинга. Причём довольно сложно делать какую-то фичу IDE так, чтобы она волшебным образом заработала и для Джавы, и для Котлина сразу. Иногда что-то можно объединить, но в большинстве случаев это двойная работа для авторов IDE. В джаве больше всяких инспекцией и квик-фиксов, в том числе ориентированных не на фичи языка, а на библиотеки. Логично ожидать, что при использовании тех же библиотек из Котлина вы получите аналогичную поддержку. Но так бывает увы не всегда.

А про штуки вроде разных имён для live-темплейтов — лучше посылать баг-репорт в youtrack.jetbrains.com.

Вот некоторые люди несколько лет Kotlin используют, но статей зря не пишут. А вам не советую генерить информационный шум с поводом проснувшегося человека
Не раз выскакивал NullPointerException даже, если использовал "?" для переменной. Может я что-то упускаю?
Ну пока что (пока не вышла версия AS3.0) подддержака в IDE не так хороша как Java, многи библиотеки без костылей и доп гугбения не работают, тот же DataBinding не работает без пробелм, для поддержки анотаций нужен собсвенынй kapt что не добаляет удобства.
Вобщем надеюсь что после релиза разаработка приложений с kotlin будет проще со временем конечно.
В последнее время рост интереса к языку программирования Kotlin приблизительно такой же, как рост курса Bitcoin. Повышенное внимание обусловлено еще и тем фактом, что в мае 2017 года Kotlin был объявлен официальным языком разработки под Android.


Желтизна так и прет.

На деле было иначе:
venturebeat.com/2017/05/17/android-now-supports-the-kotlin-programming-language

Google announced Android is gaining official support for the Kotlin programming language, in addition to Java and C++.


«Официальная поддержка» и «стал официальным языком» — это вовсе не одно и то же.

Подскажите как в Kotlin'e проверить объект является ли он массивом, предположим, строк


if (obj instanceof String[]) {
...
}

такой java код плагин IDEA переводит вот в это, но такой вариант "не катит":


if (obj is Array<String>) {
...
}

как вариант использовать:


if (obj::class.java.isArray and String::class.java.isAssignableFrom(obj::class.java.componentType) {
...
}

но я уверен что должен быть более изящный вариант.

Как не самый красивый вариант, можно попробовать вот так:


val isStringArray = try {
        obj as Array<String>
        true
    } catch (e: ClassCastException) {
        false
    }
Это, видимо от того, что это платформозависимый код, так как в JavaScript, который является второй платформой, типизированных массивов нет. Можно ещё воспользоваться оператором `as?`

    @Suppress("UNCHECKED_CAST")
    val array = obj as? Array<String>
    if (array != null) { ... } else { ... }
var obj: Array<String> = arrayOf("t")
println("Array<String>: " + obj.isArrayOf<String>() + "\n")
println("Array<Number>: " + obj.isArrayOf<Number>() + "\n")
println("Array<Object>: " + obj.isArrayOf<Int>() + "\n")

var obj1: Array<Int> = arrayOf(1)
println("Array<String>: " + obj1.isArrayOf<String>() + "\n")
println("Array<Number>: " + obj1.isArrayOf<Number>() + "\n")
println("Array<Object>: " + obj1.isArrayOf<Int>() + "\n")

выведет:


Array<String>: true
Array<Number>: false
Array<Object>: false
Array<String>: false
Array<Number>: true
Array<Object>: true

Ах, хитрый метод… В исходниках он использует всё тот же isAssignableFrom, а в компиляторе он является intrinsic и в байт-коде преобразуется в instanceof.

Sign up to leave a comment.