Memeriksa tipe data objek menggunakan operator instanceof (Java)
1
2
3
4
5
6
| public class Mobil { public void nyalakanMesin() {} public static void main(String[] args) { Object obj = new Mobil(); } } |
Object
dalam pemrograman Java
merupakan kelas paling dasar dari semua kelas yang ada dan semua kelas
langsung atau tidak langsung diturunkan dari kelas ini. Oleh karenanya
kelas Mobil
merupakan turunan dari kelas Objek
. Sehingga secara logika obyek mobil adalah suatu objek. Sehingga penulisan kode program seperti di atas diperbolehkan.
Sekarang misalnya obyek yang direferensi oleh variabel
obj
yakni objek dari kelas Mobil
ingin dikembalikan lagi ke bentuk objek aslinya, maka diperlukan type-casting
secara eksplisit. Hal ini karena tidak semua objek adalah mobil dan
mobil hanya salah satu objek dari objek lainnya. Sehingga penulisannya
menjadi:
1
| Mobil mobil = (Mobil)obj; |
instanceof
yang akan bernilai true
jika suatu objek merupakan tipe suatu kelas tertentu. Jika suatu objek
bukan tipe data suatu kelas tertentu, maka nilai operator instanceof
bernilai false. Contoh:
1
2
3
4
| if (obj instance of Mobil) { Mobil mobil = (Mobil)obj; mobil.nyalakanMesin(); } |
instanceof
dan ternyata variabel obj
tidak mereferensi objek dari kelas Mobil
, maka statemen di atas akan menyebabkan kesalahan. Contoh:
1
2
3
| Object obj = new Orang(); Mobil mobil = (Mobil)obj; // error di sini mobil.nyalakanMesin(); |
obj
mereferensi objek dari kelas Orang
, sedangkan pada proses type-casting, objek yang direferensi oleh variabel obj
diubah (cast) ke bentuk tipe data kelas Mobil
.