Panduan untuk Operator Berlian di Jawa

1. Ikhtisar

Pada artikel ini, kita akan melihat operator berlian di Java dan bagaimana obat generik dan API Koleksi memengaruhi evolusinya .

2. Jenis Mentah

Sebelum Java 1.5, Collections API hanya mendukung tipe mentah - tidak ada cara untuk argumen tipe untuk dijadikan parameter saat membuat koleksi:

List cars = new ArrayList(); cars.add(new Object()); cars.add("car"); cars.add(new Integer(1));

Ini memungkinkan semua jenis untuk ditambahkan dan menyebabkan potensi pengecualian casting pada waktu proses .

3. Generik

Di Java 1.5, Generik diperkenalkan - yang memungkinkan kita untuk membuat parameter argumen tipe untuk kelas , termasuk yang ada di Collections API - saat mendeklarasikan dan membangun objek:

List cars = new ArrayList();

Pada titik ini, kita harus menentukan tipe berparameter di konstruktor , yang bisa jadi tidak terbaca:

Map
    
     >> cars = new HashMap
     
      >>();
     
    

Alasan untuk pendekatan ini adalah bahwa tipe mentah masih ada demi kompatibilitas ke belakang , sehingga compiler perlu membedakan antara tipe mentah dan generik:

List generics = new ArrayList(); List raws = new ArrayList();

Meskipun kompilator masih mengizinkan kita menggunakan tipe mentah di konstruktor, ia akan meminta kita dengan pesan peringatan:

ArrayList is a raw type. References to generic type ArrayList should be parameterized

4. Operator Berlian

Operator berlian - diperkenalkan di Java 1.7 - menambahkan inferensi tipe dan mengurangi verbositas dalam tugas - saat menggunakan obat generik :

List cars = new ArrayList();

Fitur inferensi tipe compiler Java 1.7 menentukan deklarasi konstruktor yang paling cocok yang cocok dengan pemanggilan .

Pertimbangkan antarmuka dan hierarki kelas berikut untuk bekerja dengan kendaraan dan mesin:

public interface Engine { } public class Diesel implements Engine { } public interface Vehicle { } public class Car implements Vehicle { }

Mari buat sebuah mobil baru menggunakan operator berlian:

Car myCar = new Car();

Secara internal, penyusun mengetahui bahwa Diesel mengimplementasikan antarmuka Mesin dan kemudian dapat menentukan konstruktor yang sesuai dengan menyimpulkan jenisnya.

5. Kesimpulan

Sederhananya, operator berlian menambahkan fitur inferensi tipe ke kompiler dan mengurangi verbositas dalam tugas yang diperkenalkan dengan obat generik.

Beberapa contoh tutorial ini dapat ditemukan di proyek GitHub, jadi silakan unduh dan mainkan.