download

Reflection
Matakuliah
Pertemuan
Tahun
Versi
: T0984 / Algoritma dan Metode Object Oriented Programming II
: 11
: 2008
: 1/0
Learning Outcomes
Pada akhir pertemuan ini, diharapkan
mahasiswa akan mampu:
– Menerapkan penggunaan refleksi pada
kelas – kelas di Java Programming
Language.
Bina Nusantara
Outline Materi
•
•
•
•
•
•
Pengenalan Refleksi
Penggunaan kelas Class
Refleksi Fungsi
Contoh Refleksi Fungsi
Refleksi Field
Contoh Refleksi Field
Bina Nusantara
Pengenalan Refleksi
• Memperbolehkan untuk menjalankan program
Java untuk diperiksa dan “intropeksi” atas
dirinya sendiri (informasi) dan memanipulasi
properti di dalam programnya. Contoh : untuk
mendapatkan semua nama member kelasnya
dan menampilkannya.
• Kemampuan
untuk
menjalankan
dan
memanipulasi sebuah kelas di Java.
• Proses pada saat run time oleh JVM.
Bina Nusantara
Penggunaan kelas Class
• Menggunakan objek kelas Class untuk
memperoleh informasi dari kelas yang kita
inginkan. Contoh :
MyClass obj = new MyClass();
Class kelas = obj.getClass();
Atau
Class kelas = MyClass.class;
Note : obj adalah instance object dari kelas MyClass.
Bina Nusantara
Refleksi Fungsi
• Dari kelas Class ada beberapa method/function
yang digunakan untuk mengambil informasi dari
suatu kelas, antara lain :
• forName
• getName
• getSuperclass
• getContructors
• getDeclaredField
• getDeclaredMethod
• getField dan getFields
• getInterfaces
• getMethod dan getMethods
• getPackage
• getModifiers
• isArray
• isInstance , dll
Untuk lebih jelasnya dapat dilihat pada Java Documentation
Bina Nusantara
Contoh Refleksi Fungsi
• Berikut Contoh kelas Mahasiswa yang akan diambil
informasi propertinya dengan reflection :
Berisi 2 buah Overloading Constructor,
3 Setter dan 3 Getter function.
Kelas Mahasiswa merupakan turunan
langsung dari kelas Object dengan hak
akses bersifat Public
Bina Nusantara
Contoh Refleksi Fungsi ( lanjutan .. )
•
Berikut adalah kelas AmbilKelas yang akan mengambil
informasi dari kelas Mahasiswa :
Import Static Class dari kelas Modifier,
untuk mendapatkan hak akses
Objek dari kelas Class menerima kelas Mahasiswa
Mengambil nama kelasnya
Mengambil informasi dari
manakah turunan kelasnya
Mengambil seluruh hak akses dari kelas tersebut
Bina Nusantara
Menggunakan kelas Modifier untuk mengecek
hak akses kelas tersebut apakah dia Abstract, Final
atau Public dengan pengembalian nilai
berupa boolean
Contoh Refleksi Fungsi ( lanjutan .. )
• Berikut Output dari kelas AmbilKelas :
Bina Nusantara
Contoh Refleksi Fungsi ( lanjutan .. )
• Berikut contoh jika kita ingin mengetahui
informasi dari kelas yang sudah pernah di
deklarasi dari Java-nya sendiri.
Untuk import kelas Method
Kelas Stack diasosiasikan ke objek c
dari kelas Class
Mengambil semua fungsi
yang dideklarasi di kelas Stack
Bina Nusantara
Contoh Refleksi Fungsi ( lanjutan .. )
• Berikut Output informasi dari kelas Stack
Jenis Hak Akses method
Menerima passing parameter dengan Tipe kelas Object
• Dapat kita lihat ada 5 fungsi yang dimiliki oleh kelas Stack ( pop,
push, empty, peek, dan search )
• Dari ke-5 fungsi tersebut dapat kita lihat jenis pengembalian nilai
fungsinya ada yang berupa Object (pop, push, peek), boolean (
empty ) , int ( search )
Bina Nusantara
Contoh Refleksi Fungsi ( lanjutan .. )
• Jika String parameter pada fungsi forName kita
ganti menjadi :
Class c = Class.forName( "Mahasiswa“ );
2
Maka hasilnya :
4
1
5
3
1.
2.
3.
4.
5.
Bina Nusantara
Hak akses setiap fungsi
3 fungsi setter bertipe Void
3 fungsi getter dengan pengembalian nilai String
3 fungsi setter dengan sebuah paramter String
3 fungsi getter tanpa parsing parameter
Refleksi Field
• Field – field dalam kelas di Java dapat diperoleh
juga melalui refleksi dengan menggunakan
method dari kelas Class, diantaranya dengan
menggunakan :




Bina Nusantara
getField(String name)  mengambil salah satu field yang disebut
getFields()  mengambil semua field yang ada
getDeclaredField(String name)  mengambil satu field yang dideklarasi kelas
getDeclaredFields()  mengambil semua field yang dideklarasi
Contoh Refleksi Field
• Berikut Contoh refleksi kelas Mahasiswa untuk
mendapatkan Field yang dideklarasi
Asosiasi ke kelas Mahasiswa
Mengambil semua field yang
Telah dideklarasi
Bina Nusantara
Contoh Refleksi Field ( lanjutan .. )
•
Berikut Hasil outputnya :
1
2
3
1. Akses Modifier setiap field yang dideklarasi
2. Tipe data setiap field yang dideklarasi
3. Nama field yang dideklarasi
Bina Nusantara
Referensi
• Applied Java Pattern. 1st. Stephen Stelting and Olav
Maassen. 2001. Chapter 6, hal 197
• Reflection

http://www.onjava.com/pub/a/onjava/2007/03/15/reflections-on-javareflection.html?page=2
 http://www.ibm.com/developerworks/library/j-dyn0603/
 http://java.sun.com/developer/technicalArticles/ALT/Reflection/index.html
Bina Nusantara