Belajar Bahasa Pemrograman Dart : Generic – getsolutionit.com
Belajar Bahasa Pemrograman Dart : Generic

Generic

Jika Anda perhatikan pada dokumentasi collection seperti List, sebenarnya tipe dari List tersebut adalah List<E>. Tanda <...> ini menunjukkan bahwa List adalah tipe generic, tipe yang memiliki tipe parameter. Menurut coding convention dari Dart, tipe parameter dilambangkan dengan satu huruf kapital seperti ETK, atau V.

Secara umum generic merupakan konsep yang digunakan untuk menentukan tipe data yang akan kita gunakan. Kita bisa mengganti tipe parameter generic pada Dart dengan tipe yang lebih spesifik dengan menentukan instance dari tipe tersebut.
Sebagai contoh, perhatikan List yang menyimpan beberapa nilai berikut:


  1. List<int> numberList = [1, 2, 3, 4, 5



Tipe parameter yang digunakan pada variabel list di atas adalah int, maka nilai yang bisa kita masukkan adalah nilai dengan tipe int. Begitu juga jika kita menentukan tipe parameter String, maka tipe yang bisa kita masukkan ke dalam list hanya berupa String.


  1. List<int> numberList = [1, 2, 3, 4, 5

  2. List<String> stringList = ['Dart', 'Flutter', 'Android', 'iOS'

  3. List dynamicList = [1, 2, 3, 'empat'  // List<dynamic>



Berbeda jika kita tidak menentukan tipe parameter dari listList tersebut tidak memiliki tipe yang menjadi acuan bagi kompiler sehingga semua tipe bisa disimpan ke dalam list. Variabel dynamicList di atas sebenarnya masih menerapkan generic dengan tipe dynamic sehingga tipenya menjadi List<dynamic>.
Dari kasus di atas kita bisa simpulkan bahwa Dart membantu kita menghasilkan kode yang type safe dengan membatasi tipe yang bisa digunakan ke dalam suatu objek dan menghindari bug. Selain itu generic juga bermanfaat mengurangi duplikasi kode.
Misalnya ketika Anda perlu untuk menyimpan objek cache bertipe String dan int. Alih-alih membuat dua objek StringCache dan IntCache, Anda bisa membuat satu objek saja dengan memanfaatkan tipe parameter dari generic.


  1. abstract class Cache<T> {

  2.   T getByKey(String key

  3.   void setByKey(String key, T value

  4. }



Dengan Dart type system kita bisa mengganti tipe parameter yang digunakan sesuai dengan susunan hierarkinya. Perhatikan hierarki objek Animal berikut:
2020033110310018d2bf3fc6d0527f9f6a8c6096d350c9.jpeg
Dengan hierarki di atas, jika kita memiliki objek List<Bird> maka objek apa saja yang bisa kita masukkan ke list tersebut?


  1. List<Bird> birdList = [Bird(), Dove(), Duck()];



Seluruh objek Bird atau objek turunannya bisa masuk ke dalam birdList. Namun, ketika menambahkan objek dari Animal, terjadi compile error karena objek Animal belum tentu merupakan objek Bird.


  1. List<Bird> birdList = [Bird(), Dove(), Duck(), Animal()];  // Error



Berbeda jika kita mengisi List<Bird> dengan List<Animal> seperti berikut:


  1. List<Bird> myBird = List<Animal>();



Kompiler tidak akan menunjukkan eror namun ketika kode dijalankan akan terjadi runtime error karena List<Animal> bukanlah subtype dari List<BIrd>.


  1. Unhandled exception:

  2. type 'List<Animal>' is not a subtype of type 'List<Bird>'


Dijual Akun Youtube Sultan
Akun Sudah Memiliki 100-800.000 Subscribes & Sudah Monetisasi
Details
Dijual Akun FB, IG, LINKEDIN & Tiktok Mewah

Akun Sudah Memiliki 100-800.000 Followers

Details
Dijual Akun Twitter Mewah
Akun Sudah Memiliki 100-800.000 Followers
Details
Tools AI & Softwher
Tools AI & Beragam Softwher Serta Beragam Source Code Web Perimum
Details
.
Berikut List Produk Kami :

Dapatkan Produk Virtual Kmisini dengan harga pelajar, kualitas profesional ahli. 




Produk Yang Kami Jual Semua Berkualitas Premium & 100% Aman

Read More
Berikut List Layanan Kami :

Dapatkan layanan kami di sini dengan harga pelajar, kualitas profesional ahli. 




Jadikan Kami Tim Anda dalam Mengembangkan Bisnis Luar Biasa Anda.

Read More
Jasa Kelola Konten
Facebook, Instagram, Twitter, dan Linkedin
Details
Jasa Editing Video
Jasa mengelola Konten youtube dan tiktok
Details
Jasa Iklan Untuk Google
Website, Youtube, Gmail & Google Maps
Details
Jasa Website
Jasa Pembuatan website profesional
Details
Jasa SEO
Jasa SEO Website (search engine optimization)
Details
Jasa Tools AI
Setup & Pembuatan Tools
Details
Jasa Akun Terverifikasi
Centang Hijau / Biru All Media Sosial
Details
Jasa Pembuatan Project
IoT, Robotika, Elektronika dan Otomasi
Details
jasa sistem informasi
jasa pembuatan sistem informasi
Details
Jasa Pembuatan Aplikasi
Aplikasi Android, iOS dan Dekstop
Details
Jasa Google Maps
Jasa Pembuatan Titik Google Maps & Tambah Ulasan Positif
Details
Cyber Security
Jasa Cyber Security- Keamanan Semua Sistem
Details