Rumah > Java > javaTutorial > Kotlin untuk Pembangun Java (Bahagian 1)

Kotlin untuk Pembangun Java (Bahagian 1)

Mary-Kate Olsen
Lepaskan: 2025-01-27 16:04:17
asal
883 orang telah melayarinya

Kotlin for Java Developers (Part 1)

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:

    Gunakan kelas data
  • menggunakan keselamatan kosong
  • Di bawah keadaan lalai, bukan -muttering
  • Gunakan kelas data
  • Tema ini tidak lama lagi akan hilang, kerana semakin banyak pemaju Java juga mempunyai pengalaman menggunakan rekod. Walau bagaimanapun, masih terdapat beberapa perbezaan antara rekod Java dan kelas data Kotlin.

Kaedah Java:

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

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.

    Di Kotlin, anda juga boleh menutupi kaedah hashcode, dan toString, yang mustahil di Jawa.
  • Kotlin menyediakan kaedah salinan dengan tanah, yang tidak terdapat di Java.
  • Beberapa contoh:
  • salin objek di java
Kotlin:

atau menguraikan pernyataan di Java:

Kotlin:
<code class="language-java">Person p2 = new Person(p1.getName(), p1.getAge());</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Rujukan
<code class="language-kotlin">val p2 = p1.copy(age = 42)</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

kelas data Kotlin

<code class="language-java">String name = p1.getName();
int age = p1.getAge();</code>
Salin selepas log masuk
Salin selepas log masuk
baeldung: kelas data kotlin

<code class="language-kotlin">val (name, age) = p1
println(name) // "John"
println(age) // 42</code>
Salin selepas log masuk
Salin selepas log masuk

menggunakan keselamatan kosong

Pada pendapat saya, keselamatan udara di Kotlin adalah salah satu fungsi yang paling kuat. Ini adalah fungsi yang mengubah peraturan permainan, yang dapat menjimatkan banyak masa dan masalah. Di Kotlin, keselamatan udara introvert dalam sistem jenis, yang menjadikannya lebih mudah untuk mengelakkan kesilapan runtime yang berkaitan dengan udara.
  • 1. Boleh jenis kosong
  • Di Kotlin, jenis kosong diisytiharkan secara eksplisit. Ini bermakna anda boleh mempunyai pemboleh ubah yang mungkin menyelamatkan nilai kosong, tetapi anda mesti ditentukan secara jelas dalam pernyataan tersebut.
jenis non -empty (lalai)

Secara lalai, semua jenis di Kotlin sangat diperlukan, yang bermaksud bahawa pembolehubah tidak dapat menyimpan nilai kosong.

boleh mengosongkan jenis

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

?.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.

3. Operator Elvis (?:)

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

4. !! (penegasan bukan nol)

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Petua: Penggunaan operator !! ini ditamatkan kerana ia mengalahkan tujuan keselamatan nol.

5. Kebolehbatalan dalam parameter fungsi

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

6. Penukaran selamat (sebagai operator)

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

7. Keselamatan nol dalam ungkapan lambda

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>
Salin selepas log masuk
Salin selepas log masuk

8. Gunakan fungsi let

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>
Salin selepas log masuk
Salin selepas log masuk

9. Amalan Terbaik

  • Elakkan menggunakan operator !!
  • Mengendalikan jenis nullable dengan selamat dan memberikan nilai lalai menggunakan panggilan selamat dan pengendali Elvis
  • Gunakan jenis nullable hanya apabila perlu
Rujukan:

    Keselamatan Null Kotlin

Ketidakbolehubah secara lalai

Kotlin sangat menggalakkan gaya pengaturcaraan berfungsi! Untuk gaya pengaturcaraan berfungsi, kebolehubahan memainkan peranan penting dalam mengelakkan ralat, terutamanya dalam aplikasi berbilang benang.

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

Dalam Kotlin, pembolehubah yang diisytiharkan menggunakan kata kunci val tidak boleh diubah secara lalai. Ini sangat hampir dengan mengisytiharkan pembolehubah akhir dalam Java, tetapi dengan beberapa perbezaan utama:

    Pembolehubah val dalam Kotlin sebenarnya adalah baca sahaja - nilai yang diberikan kepadanya tidak boleh ditukar selepas pemulaan.
  • Walau bagaimanapun, jika nilai adalah objek, sifat objek masih boleh diubah suai, melainkan sifat itu sendiri diisytiharkan sebagai val.

Contoh:

<code class="language-kotlin">val name: String = "John" // 不可空
name = null // 编译错误!</code>
Salin selepas log masuk
Perbezaan daripada Java: Di Jawa, kami menggunakan kata kunci terakhir untuk memastikan pembolehubah tidak boleh ditetapkan semula, tetapi objek yang ditunjuknya masih boleh diubah. Perbezaan utama dalam Kotlin ialah kebolehubahan meluas kepada pembolehubah secara lalai, yang menggalakkan reka bentuk yang lebih boleh diramal dan selamat untuk keseluruhan aplikasi.

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>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
tip: Kotlin menggalakkan sebanyak mungkin dan bukannya VAR untuk memastikan tidak -degeneration.

2. Koleksi Unchanging

Secara lalai, ia juga digalakkan untuk menggunakan tidak aktif. Set yang tidak jelas menghalang sebarang pengubahsuaian selepas penciptaan.

<code class="language-java">public record Person(
    String name,
    int age
) {
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Jika anda perlu mengubah suai koleksi, anda boleh menggunakan MutableListOf () atau jenis pengumpulan pembolehubah lain.

<code class="language-kotlin">data class Person(val name: String, var age: Int)</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Perbezaan antara Java: Di Java, koleksi (seperti ArrayList) berubah secara lalai, yang bermaksud bahawa ia dapat mengubah suai unsur -unsur dengan bebas.

3. Kategori Data Variabel Tidak dapat

Kelas data Kotlin tidak berubah secara lalai. Apabila menentukan kelas data, atribut biasanya diisytiharkan sebagai Val, yang menjadikan kelas tidak berubah. Ini menjadikan kelas sangat sesuai untuk objek nilai, terutamanya apabila berurusan dengan API, rekod pangkalan data, atau status objek lain yang tidak boleh diubah selepas penciptaan.

<code class="language-java">Person p2 = new Person(p1.getName(), p1.getAge());</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
<code class="language-kotlin">val p2 = p1.copy(age = 42)</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
4. Yang tidak memuaskan dalam kelas pengedap

Kelas pengedap Kotlin juga boleh tidak berubah, dan mereka dipadankan dengan model data yang tidak tersembunyi. Kelas pengedap biasanya digunakan untuk mewakili struktur kelas terhad, seperti status atau tindak balas, dan tidak bermoral mereka memastikan bahawa keadaan atau keputusan tidak akan diubah secara tidak sengaja.

Atas ialah kandungan terperinci Kotlin untuk Pembangun Java (Bahagian 1). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan