順序
この記事は主に、KotlinがJavaコードを改善する方法のいくつかの例を示しています
文字列リテラルとテンプレート
文字列リテラル値
@test fun testStringliterals(){val a = "" "if(a> 1){| return a |}" ""。trimmargin()println(a)val b = "" "foo bar" ""。trimindent()println(b)}文字列リテラルを使用すると、SQLを書く場合、文字列をスプライスするためにそれほど努力する必要はありません。
文字列テンプレート
@Test Fun TestStringTemplate(){val name = "hello kotlin" println( "hello、$ name!"); val data = listof(1,2,3)println( "hello、$ {data [0]}!")}この文字列テンプレートはさらに強力で、ビルトインフリーマーカーに相当し、可変値を手動で渡す必要はありません
forループの現在のインデックスを取得します
@test fun testforeachindex(){val items = listof( "apple"、 "banana"、 "kiwifruit")for(Items.indices){println( "$ index is $ {item [index]}")}}}Javaでは、各ループのインデックスを取得したい場合は、外部のインデックスを宣言し、自分でカウントする必要があります。ぎこちすぎます
データクラス
// Getter/Setter、Equals、Hashcode、Tostring、Copyなどを生成する// Setterはデータクラスの顧客のみを持っています(val名:string、val email:string)@test fun testdataclass(){val customer = customer( "admin"、 "admin @admin.com")println(customer)} Javaは常にGetter/Setterを宣言します。利点は、Getter/Setterを呼び出すIDEでこれらのメソッドを見つけることができることです。
LombokはGetter/Setterを自動的に生成でき、@Dataアノテーションは等/ハッシュコードメソッドを生成することもできますが、LombokはGetter/Setterを呼び出すIDEでそれらのメソッドを見つけるのに便利ではありません。 Kotlinのデータクラスは、これらの問題を解決するのに役立ちます
ヌルの安全
@test fun fun testifnotnull(){val files = file( "test")。listfiles()println(files?.size)// null} @test fun testifnotnullandelse(){val files = file( "test")。このヌルの安全性は非常に便利で、Javaの3成分表現よりも少し簡潔です。式が真である場合は、返されるコンテンツを繰り返す必要はありません。他の部分を書くだけです。
ヌルの安全性は、コールをストリーミング/チェーンした場合に便利です
//「人」または `person.department`の1人が空である場合、関数は:person?department?.head = managerspool.getmanager()と呼ばれません
まとめ
この記事は、Javaコードを改善できるKotlinの例をいくつか示しています。 Kotlinはあまりにも強力であり、目標はJavaを置き換えることです。デザインの多くはScalaの影を見ることができますが、多くの黒魔術もあり、学習曲線は少し揺れていますが、あまりにも高度な文法を使用しないと大丈夫です。
関連リファレンス:https://www.kotlincn.net/docs/reference/