Kotlin M4リリース

プログラミング言語のもう1つのマイルストーンであるKotlin M4 がリリースされました 。 現在、KotlinはJDK7と互換性があり、タイプをより良く出力することを学び、より高速になりました。 デバッガーは大きな進歩を遂げ、IDEとJUnitの統合、新しいアセンブリメカニズムがサポートされ、最終的にインクリメンタルコンパイラーに成長します...この投稿では、最も興味深いものについて簡単に説明します。





かんノテーター





おそらく覚えているように、Kotlin型システムはJavaのシステムよりも多少リッチです。 特に、Kotlinは型システムレベルでnull参照を制御します。 これは、どこでもnullになり得ないものとは言えないJavaコードと対話する必要があるまで正常に機能し、Kotlinコンパイラーは最悪の事態を想定する必要があります。 このアプローチは安全ですが、あまり便利ではないため、以前のリリースであるKotlin M3では、このメソッドまたはそのメソッドがnullを返さないことをユーザーに環境に説明できる外部注釈メカニズムをサポートしました(実際、環境にもっと伝えることができますしかし、その別の時間についての詳細)。



ところで、これらのアノテーションはKotlinだけでなく、IntelliJ IDEAにはJavaでのNPEの回避に役立つすばらしい検査があります 。JetBrainsではこれらを常に使用しており、非常に満足しています。



ただし、大きなライブラリに手動で注釈を付けるのは困難であり、それらのコードはどの注釈を示す必要があるかが常に明確ではありません。 そのため、特別なツール(もちろんKotlinで作成)を開発しました-KAnnotatorは、ライブラリのバイトコードを読み取り、必要な注釈を自動的に表示します。 これは次のように動作します。jarファイルのセットが入力され、KAnnotatorがそれらを分析し、次のような注釈を含むxmlファイルを生成します。

画像

これらの注釈はプロジェクトに接続することができ、IDEとKotlinコンパイラの両方がそれらを表示します。



KAnnotatorはまだ非常に若いので、よりスマートに開発および成長できますが、今日ではM4に含まれるJDKの自動注釈付きバージョンが既にあります



データクラスのコピー





データクラスはM3に登場し、多くのユーザーはこれらのクラスのオブジェクトをコピーして、一部のフィールドの値を置き換える機能をサポートするように要求しました(オブジェクト自体はしばしば不変です)。 M4では、この機能がサポートされています。



data class Person(val firstName: String, val lastName: String)









fun Person.asMarried(newLastName: String)

= this.copy(lastName = newLastName)









copy()関数はすべてのデータクラスに対して自動的に生成され、各パラメーターにはデフォルト値があります。したがって、コピーする場合は、値が変更されたプロパティのみを指定するだけで十分です。



Javaのバリエーション





Kotlinのジェネリッククラスを使用すると、一般的なパラメーターの分散を指定できます。コレクションライブラリには、分散を正しく示す読み取り専用インターフェイスがあるためList , List. Kotlin. Java?



M4, Kotlin -, Java. , :



fun join(l: List, separator: String): String = ...



:



String join(List<? extends Object>, String separator)





, Java List, .



...



, , , Kotlin, ... .



IntelliJ IDEA 12, , ( Community Edition ). .



!




















List , List. Kotlin. Java?



M4, Kotlin -, Java. , :



fun join(l: List, separator: String): String = ...



:



String join(List<? extends Object>, String separator)









, Java List, .



...



, , , Kotlin, ... .



IntelliJ IDEA 12, , ( Community Edition ). .



!
















List , List. Kotlin. Java?



M4, Kotlin -, Java. , :



fun join(l: List, separator: String): String = ...



:



String join(List<? extends Object>, String separator)









, Java List, .



...



, , , Kotlin, ... .



IntelliJ IDEA 12, , ( Community Edition ). .



!
















List , List. Kotlin. Java?



M4, Kotlin -, Java. , :



fun join(l: List, separator: String): String = ...



:



String join(List<? extends Object>, String separator)









, Java List, .



...



, , , Kotlin, ... .



IntelliJ IDEA 12, , ( Community Edition ). .



!



















All Articles