Jurusan Teknik Elektro Universitas Udaya (1)
Java Programming
Jurusan Teknik Elektro
Universitas Udayana
Generics
• Generics digunakan sebagai tipe data yang dapat didefinisikan
ketika sebuah class akan dipakai
• Konsep mendekati dengan generics java adalah typename/class
template pada C++
• sebuah template yang bertipe typename/class dapat digantikan
dengan tipe data lain, bergantung pada inisialisasi class-nya
• syntax yang digunakan pada java untuk mendefinisikan generics
adalah “” setelah nama class, contoh
Generics
Pada contoh sebelumnya, didefinisikan sebuah class T dan
generics X, dimana X nantinya dapat digantikan oleh tipe data
apapun bergantung pada proses inisialisasinya. Contoh isi
prosedur main:
Generics
• Pada contoh sebelumnya, ii merupakan class T yang
generics X-nya didefinisikan sebagai Integer
• variabel ist merupakan class T yang
generics X-nya didefinisikan sebagai string
• Pemberian generics boleh lebih dari 1 misal X,Y, Z.
• Contoh class yang menggunakan lebih dari 1 parameter adalah
HashMap, dimana class
tersebut berguna sebagai array asosiatif
Generics
• Pemberian nama generics menurut standar adalah 1 huruf kapital
• generics boleh digantikan dengan Object apapun, dan tidak dapat
digantikan dengan tipe – tipe primitif seperti int (Integer adalah
class, int adalah primitives)
Berikut ini contoh pengisian generics
dengan turunannya
• ArrayList pada contoh merupakan class yang memiliki 1
parameter generics, dengan mengisinya dengan T1, maka T2
sebagai turunan T1 juga dapat masuk ke dalamnya
Nested Generics
Nested Generics merupakan generics yang digantikan dengan class
yang memiliki parameter generics
contoh ArrayList yang menyimpan ArrayList of String
Nested Generics
Pada contoh diibaratkan membuat array dinamis 2 dimensi
yang mampu menyimpan string
Nesting generics boleh dilakukan berkali-kali
Generic Method
Generic Method merupakan metode yang memiliki parameter
generics
Parameter tersebut harus dituliskan sebelum nama fungsi
Contoh fungsi static yang mempergunakan generic
Generic Method
• Pada contoh sebelumnya, fungsi tersebut mencari tipe T dari
array V, dimana V merupakan turunan dari T
• dinamakan bounded type
• Contoh pemanggilan fungsi di atas adalah Constructor juga dapat
memiliki generics, sebagai contoh, apabila hanya angka yang menjadi
parameter sebuah constructor, dapat dituliskan
Generic Method
Pada contoh sebelumnya, tidak perlu mendefinisikan tipe data
pada class, karena generics terdapat pada constructornya
Contoh lain, apabila mempergunakan array pada fungsi static
Generic Interface
• generic dapat diberikan pada interface
• contoh, apabila membuat interface dengan bounded type
Comparable (yaitu object harus dapat di-compare) sbb.
• Pada interface di atas, implementasikan class untuk mencari
object terkecil dan maksimumnya
Generic Interface
Generic Interface
Class sebelumnya mengimplementasikan interface IMinMax yang
telah dibuat, berikut contoh pemakaian class tsb
Wildcard
• Wildcard digunakan sebagai pengganti generics
• Wildcard digunakan jika tidak mempedulikan tipe data dari generics
(tidak perlu tahu)
• Atau jika peduli tipe datanya tetapi tidak perlu untuk mendefinisikan
variabel dengan tipe tersebut. Contoh penggunaan wildcard pada
fungsi
Collection
• Pada contoh, Collection dapat dibaca sebagai “koleksi dari
sesuatu yang tidak diketahui”
• Collection merupakan parent dari ArrayList, HashMap dan TreeSet
• Sehingga mampu mempassing ArrayList ke dalam fungsi
tsb.
• Mengapa tidak menggunakan Collection?
• Collection bukanlah tipe yang tepat sebagai parameter
untuk turunan collection yang parameternya bukan Object, seperti
ArrayList
• Dapat disimpulkan, apabila parameter fungsi berupa Parent1
maka Turunan1 dapat dipassing, sedangkan apabila parameter
fungsi berupa Parent1 maka Turunan1 dapat dipassing
ke dalam fungsi tersebut
Collection
Bounded Wildcard
Bounded wildcard
wildcard yang dibatasi hanya dari class turunan (extends) atau parent
(super) tertentu
Sebagai contoh, fungsi ini hanya menerima parameter generic
turunan dari class number
Bounded Wildcard
Keyword extends pada contoh dapat digantikan dengan super,
yang memiliki arti berbeda, yaitu hanya superclass dari
number yang boleh masuk ke dalam fungsi tersebut
Seperti pada contoh bagian Generic Method di atas, bounded
type tidak harus mempergunakan wildcard
Generic Class Inheritance
Sebuah class generic dapat diturunkan menjadi class generic,
berikut contoh
Salah satu cara untuk memeriksa dengan mempergunakan
syntax instanceof
Generic Class Inheritance
Informasi isi generics tidak tersedia saat runtime, sehingga,
apabila menuliskan “ipp instanceof
parent” akan menghasilkan compile error
Jurusan Teknik Elektro
Universitas Udayana
Generics
• Generics digunakan sebagai tipe data yang dapat didefinisikan
ketika sebuah class akan dipakai
• Konsep mendekati dengan generics java adalah typename/class
template pada C++
• sebuah template yang bertipe typename/class dapat digantikan
dengan tipe data lain, bergantung pada inisialisasi class-nya
• syntax yang digunakan pada java untuk mendefinisikan generics
adalah “” setelah nama class, contoh
Generics
Pada contoh sebelumnya, didefinisikan sebuah class T dan
generics X, dimana X nantinya dapat digantikan oleh tipe data
apapun bergantung pada proses inisialisasinya. Contoh isi
prosedur main:
Generics
• Pada contoh sebelumnya, ii merupakan class T yang
generics X-nya didefinisikan sebagai Integer
• variabel ist merupakan class T yang
generics X-nya didefinisikan sebagai string
• Pemberian generics boleh lebih dari 1 misal X,Y, Z.
• Contoh class yang menggunakan lebih dari 1 parameter adalah
HashMap, dimana class
tersebut berguna sebagai array asosiatif
Generics
• Pemberian nama generics menurut standar adalah 1 huruf kapital
• generics boleh digantikan dengan Object apapun, dan tidak dapat
digantikan dengan tipe – tipe primitif seperti int (Integer adalah
class, int adalah primitives)
Berikut ini contoh pengisian generics
dengan turunannya
• ArrayList pada contoh merupakan class yang memiliki 1
parameter generics, dengan mengisinya dengan T1, maka T2
sebagai turunan T1 juga dapat masuk ke dalamnya
Nested Generics
Nested Generics merupakan generics yang digantikan dengan class
yang memiliki parameter generics
contoh ArrayList yang menyimpan ArrayList of String
Nested Generics
Pada contoh diibaratkan membuat array dinamis 2 dimensi
yang mampu menyimpan string
Nesting generics boleh dilakukan berkali-kali
Generic Method
Generic Method merupakan metode yang memiliki parameter
generics
Parameter tersebut harus dituliskan sebelum nama fungsi
Contoh fungsi static yang mempergunakan generic
Generic Method
• Pada contoh sebelumnya, fungsi tersebut mencari tipe T dari
array V, dimana V merupakan turunan dari T
• dinamakan bounded type
• Contoh pemanggilan fungsi di atas adalah Constructor juga dapat
memiliki generics, sebagai contoh, apabila hanya angka yang menjadi
parameter sebuah constructor, dapat dituliskan
Generic Method
Pada contoh sebelumnya, tidak perlu mendefinisikan tipe data
pada class, karena generics terdapat pada constructornya
Contoh lain, apabila mempergunakan array pada fungsi static
Generic Interface
• generic dapat diberikan pada interface
• contoh, apabila membuat interface dengan bounded type
Comparable (yaitu object harus dapat di-compare) sbb.
• Pada interface di atas, implementasikan class untuk mencari
object terkecil dan maksimumnya
Generic Interface
Generic Interface
Class sebelumnya mengimplementasikan interface IMinMax yang
telah dibuat, berikut contoh pemakaian class tsb
Wildcard
• Wildcard digunakan sebagai pengganti generics
• Wildcard digunakan jika tidak mempedulikan tipe data dari generics
(tidak perlu tahu)
• Atau jika peduli tipe datanya tetapi tidak perlu untuk mendefinisikan
variabel dengan tipe tersebut. Contoh penggunaan wildcard pada
fungsi
Collection
• Pada contoh, Collection dapat dibaca sebagai “koleksi dari
sesuatu yang tidak diketahui”
• Collection merupakan parent dari ArrayList, HashMap dan TreeSet
• Sehingga mampu mempassing ArrayList ke dalam fungsi
tsb.
• Mengapa tidak menggunakan Collection?
• Collection bukanlah tipe yang tepat sebagai parameter
untuk turunan collection yang parameternya bukan Object, seperti
ArrayList
• Dapat disimpulkan, apabila parameter fungsi berupa Parent1
maka Turunan1 dapat dipassing, sedangkan apabila parameter
fungsi berupa Parent1 maka Turunan1 dapat dipassing
ke dalam fungsi tersebut
Collection
Bounded Wildcard
Bounded wildcard
wildcard yang dibatasi hanya dari class turunan (extends) atau parent
(super) tertentu
Sebagai contoh, fungsi ini hanya menerima parameter generic
turunan dari class number
Bounded Wildcard
Keyword extends pada contoh dapat digantikan dengan super,
yang memiliki arti berbeda, yaitu hanya superclass dari
number yang boleh masuk ke dalam fungsi tersebut
Seperti pada contoh bagian Generic Method di atas, bounded
type tidak harus mempergunakan wildcard
Generic Class Inheritance
Sebuah class generic dapat diturunkan menjadi class generic,
berikut contoh
Salah satu cara untuk memeriksa dengan mempergunakan
syntax instanceof
Generic Class Inheritance
Informasi isi generics tidak tersedia saat runtime, sehingga,
apabila menuliskan “ipp instanceof
parent” akan menghasilkan compile error