Video: JSP Tutorial #14 - Call Java class from JSP 2024
Java adalah cara yang bagus untuk memprogram, tapi terkadang Anda harus kreatif. Untuk melakukan ini, Anda dapat menggunakan parameter tipe wildcard. Misalkan Anda memiliki metode yang dideklarasikan seperti ini:
public void addItems (daftar ArrayList)
{
// kumpulan metode yang tidak ditampilkan
}
Pertanyaan Pemikiran: Apakah pernyataan berikut dikompilasi?
addItems (ArrayList baru ());
Jawaban: Tidak.
Itu mengejutkan karena
String
adalah subtipe dari
Objek
. Jadi Anda akan berpikir bahwa sebuah parameter yang mengatakan bahwa ia menerima objek
ArrayList
menerima string
ArrayList
.
Sayangnya, warisan tidak bekerja seperti itu ketika menyangkut parameter tipe formal. Sebagai gantinya, Anda harus menggunakan fitur generik lainnya, yang disebut wildcard.
Singkatnya, jika Anda ingin membuat metode yang menerima jenis
ArrayList
, Anda harus mengkodekan metode seperti ini:
public void addItems (daftar ArrayList)
Dalam kasus ini, tanda tanya menunjukkan bahwa Anda dapat mengetikkan jenis jenis apa pun di sini.
Itu hampir sama bagusnya dengan warisan, tapi bagaimana jika Anda ingin benar-benar membatasi parameter koleksi dari superclass tertentu? Misalnya, Anda sedang mengerjakan sistem penggajian yang memiliki superclass
Karyawan
dengan dua subclass bernama
HourlyEmployee
dan
SalariedEmployee
, dan Anda ingin metode ini menerima Objek
ArrayList
dari
Karyawan
, objek
HourlyEmployee
, atau
SalariedEmployee
?
Dalam hal ini, Anda dapat menambahkan
meluas
klausul ke wildcard, seperti ini:
public void addItems (ArrayList list)
Kemudian Anda dapat menghubungi
addItems
dengan
ArrayList
dari tipe
Karyawan
,
HourlyEmployee
, atau
SalariedEmployee
.
Sekarang, sebelum Anda menelponnya satu hari, ambil contoh ini satu langkah lebih jauh: Misalkan metode
addItems
ini muncul di kelas generik yang menggunakan parameter tipe formal
untuk menentukan jenis elemen kelas menerima, dan Anda ingin metode
addItems
menerima
ArrayList
dari jenis
E
atau subkelasnya. Untuk melakukan itu, Anda akan mendeklarasikan metode
addItems
seperti ini:
public void addItems (daftar ArrayList)
Berikut parameter tipe wildcard
hanya berarti bahwa
ArrayList < bisa jadi tipe
E
vor jenis apa pun yang meluas
E
.