Java Academy · Pelajaran

Asas Generik (T, Inferens)

Pelajari parameter jenis generik T , sebab parameter ini memberikan keselamatan semasa kompilasi dan cara operator berlian membuat inferens jenis.

Pelajaran 2 daripada 38 langkah

Asas Generik (T, Inferens) ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 3. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 3 pelajaran.

Mengapa generik?

Generik menambahkan jenis pada bekas dan utiliti supaya pengkompil dapat melindungi anda. Faedahnya:

  • Keselamatan jenis — tiada pencampuran jenis secara tidak sengaja.
  • Tiada penukaran jenis — kod lebih bersih.
  • Boleh digunakan semula — satu kelas berfungsi untuk banyak jenis.

Apakah T?

T (parameter jenis) ialah tempat letak bagi jenis sebenar. Apabila anda menulis Box<String>, pengkompil menganggap T sebagai String dalam penggunaan tersebut.

Kod: Box<T>

Box<T>: Apabila kita memberikan String sebagai ganti T, hanya String diterima. Jenis yang salah menjadi ralat masa kompilasi; tiada kejutan semasa masa jalan.

public class Main {
  // A tiny generic container
  static class Box<T> {
    private T value;
    void set(T v) { value = v; }
    T get() { return value; }
  }

  public static void main(String[] args) {
    Box<String> bs = new Box<String>(); // T becomes String
    bs.set("hello");
    System.out.println(bs.get());       // no cast needed

    // Box<Integer> bi = new Box<Integer>();
    // bi.set("oops"); // would not compile: String is not Integer
  }
}

Kod: inferens berlian

<> (berlian) membolehkan pengkompil membuat inferens tentang jenis di sebelah kanan. Jika jenis itu tidak serasi dengan jenis di sebelah kiri, kod gagal dikompil; hal ini memberikan keselamatan.

public class Main {
  static class Box<T> {
    private T value;
    Box() {}
    Box(T v) { value = v; }
    T get() { return value; }
  }

  public static void main(String[] args) {
    // Type on the left, diamond on the right — compiler infers T
    Box<Integer> a = new Box<>(123);
    Box<String> b = new Box<>("hi");

    System.out.println(a.get() + 1);    // 124
    System.out.println(b.get().toUpperCase());
  }
}

Parameter jenis terhad

Sempadan: Sesetengah kaedah generik memerlukan keupayaan seperti perbandingan. Contohnya, syarat <T> bermaksud T mestilah boleh dibandingkan.

Kod: kaedah generik terhad

Kaedah generik: syarat jenis T. Integer dan String serasi kerana kedua-duanya menyokong perbandingan.

public class Main {
  // Generic method: works for any Comparable type
  static <T extends Comparable<T>> T min(T a, T b) {
    return (a.compareTo(b) <= 0) ? a : b;
  }

  public static void main(String[] args) {
    System.out.println(min(3, 7));              // Integer
    System.out.println(min("apple", "banana")); // String (lexicographic)
  }
}

Semakan asas generik

Semakan ringkas: Apakah faedah utama menggunakan generik seperti Box<String>?

Ringkasan

Ringkasan: T ialah tempat letak; jenisnya dibuat inferens melalui berlian. Dengan pengehadan seperti perbandingan, kita menjadikan kaedah generik lebih selamat dan berkuasa.

Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
104
Pelajaran
374

Soalan Lazim

Adakah pelajaran “Asas Generik (T, Inferens)” percuma?

Ya — teks penuh “Asas Generik (T, Inferens)” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 3 pelajaran.

Apakah yang akan saya pelajari dalam “Asas Generik (T, Inferens)”?

Pelajari parameter jenis generik T , sebab parameter ini memberikan keselamatan semasa kompilasi dan cara operator berlian membuat inferens jenis. Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Java Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 3.

Berapa lamakah pelajaran “Asas Generik (T, Inferens)” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Antara Muka dalam Amalan
  2. Asas Generik (T, Inferens)
  3. Kaedah/Kelas Generik
← Kembali ke Java Academy