Java menduduki kedudukan yang dominan dalam bahasa pengaturcaraan, jadi saya telah melihat kesilapan yang sama ketika menggunakan pemaju Java ketika menggunakan Kotlin. Jangan salahkan saya.
Artikel ini akan memberitahu anda bau bau yang sering saya lihat dan bagaimana untuk merealisasikannya ideal dalam "Kotlin".
bahagian pertama siri ini akan meliputi:
atau sebagai rekod: Kaedah Kotlin Kotlin:
<code class="language-java">public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // Getters, setters, ... }</code>
anda mungkin perlu memahami beberapa perbezaan antara rekod Java dan kelas data Kotlin.
<code class="language-java">public record Person( String name, int age ) { }</code>
Rekod Java dan kategori data Kotlin adalah pembawa data yang tidak berubah.
Di Java, medan ini tersembunyi di akhir, yang tidak dapat diubah suai selepas struktur.<code class="language-kotlin">data class Person(val name: String, var age: Int)</code>
Satu lagi perbezaan ialah jenis rekod Java adalah muktamad dan dimeteraikan, yang bermaksud bahawa mereka tidak dapat dilanjutkan, dan di Kotlin, anda boleh mengembangkan kelas data.
atau menguraikan pernyataan di Java:
Kotlin:
<code class="language-java">Person p2 = new Person(p1.getName(), p1.getAge());</code>
Rujukan
<code class="language-kotlin">val p2 = p1.copy(age = 42)</code>
kelas data Kotlin
<code class="language-java">String name = p1.getName(); int age = p1.getAge();</code>
<code class="language-kotlin">val (name, age) = p1 println(name) // "John" println(age) // 42</code>
Untuk mengisytiharkan pembolehubah yang dapat menyelamatkan nilai kosong, anda mesti menggunakan pengendali.
2. Panggilan keselamatan
Fungsi yang kuat adalah pengendali panggilan yang selamat?. Ia membolehkan anda untuk mengukus kaedah dengan selamat atau mengakses atribut tanpa membuang NullPointerException.
Contoh
<code class="language-java">public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // Getters, setters, ... }</code>
?.operator menyemak sama ada objek kosong, jika ya ia mengembalikan batal serta-merta, jika tidak ia terus memanggil kaedah atau mengakses sifat. Jika objek kosong, keseluruhan ungkapan dinilai kepada null.
Pengendali Elvis?: ialah singkatan untuk mengembalikan nilai lalai jika ungkapan di sebelah kiri pengendali kosong.
<code class="language-java">public record Person( String name, int age ) { }</code>
Anda boleh menggunakan operator !! untuk memberitahu pengkompil bahawa nilainya bukan nol. Jika nilainya nol, ia akan membuang NullPointerException.
<code class="language-kotlin">data class Person(val name: String, var age: Int)</code>
Petua: Penggunaan operator !! ini ditamatkan kerana ia mengalahkan tujuan keselamatan nol.
Apabila mentakrifkan fungsi, anda boleh menentukan sama ada parameter boleh menjadi batal. Dalam kes ini pemanggil mesti mengendalikannya.
<code class="language-java">Person p2 = new Person(p1.getName(), p1.getAge());</code>
Terdapat operator penukaran yang selamat sebagai?, yang mengembalikan batal jika penukaran tidak dapat dilakukan.
<code class="language-kotlin">val p2 = p1.copy(age = 42)</code>
Anda juga boleh menggunakan ciri keselamatan nol dalam ungkapan lambda dan fungsi tertib lebih tinggi:
<code class="language-java">String name = p1.getName(); int age = p1.getAge();</code>
Fungsi let ialah fungsi berskop yang membolehkan anda melaksanakan blok kod pada objek bukan nol. Ia biasanya digunakan untuk melaksanakan kod pada objek yang boleh dibatalkan dengan cara yang selamat.
Contoh dan nilai lalai:
<code class="language-kotlin">val (name, age) = p1 println(name) // "John" println(age) // 42</code>
Saya mungkin akan menulis artikel berasingan tentang pengaturcaraan berfungsi dalam Kotlin atau Java sekarang, tetapi buat masa ini mari fokus pada kebolehubah.
Kotlin pada dasarnya lebih suka objek tidak berubah daripada objek boleh berubah. Ini menghasilkan kod yang lebih mudah dan boleh diramal, terutamanya dalam persekitaran serentak.
1. Pembolehubah (val) yang tidak boleh diubah secara lalai
Contoh:
<code class="language-kotlin">val name: String = "John" // 不可空 name = null // 编译错误!</code>
Variable Variable Contoh: Gunakan kata kunci var dalam kotlin untuk membolehkan anda memulakan semula pembolehubah.
<code class="language-java">public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // Getters, setters, ... }</code>
tip: Kotlin menggalakkan sebanyak mungkin dan bukannya VAR untuk memastikan tidak -degeneration.2. Koleksi Unchanging
<code class="language-java">public record Person( String name, int age ) { }</code>
<code class="language-kotlin">data class Person(val name: String, var age: Int)</code>
3. Kategori Data Variabel Tidak dapat
<code class="language-java">Person p2 = new Person(p1.getName(), p1.getAge());</code>
<code class="language-kotlin">val p2 = p1.copy(age = 42)</code>
Atas ialah kandungan terperinci Kotlin untuk Pembangun Java (Bahagian 1). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!