Dynamic Array Dengan Reflection 1

| Comments

buat para programmer java tau dong kalau ukuran array di java itu statis, alias sekali instance suatu array di buat kita harus sudah menentukan berapa ukuran array yang akan kita gunakan…. pertanyaan nya sekarang… kalau kita memerlukan suatu array yang ukuran nya bisa kita ubah alias dinamis gimana? oke java sendiri sudah menyediakan beberapa tipe data seperti ArrayList, dan Vector yang menyediakan penyimpanan serupa array… tapi bukan array… dan kita harus membuat method untuk mengonvert tipe data dari setiap elemen list tersebut, ketipe data untuk array yang kita perlukan. tapi nggak jarang kita menemukan satu kasus dimana kita hanya memerlukan array. tapi kita tidak dapat menentukan ukuran array tersebut pada saat menulis program….

java menyediakan paket reflection, yang dapat membuat suatu object menganalisis dirinya sendiri… sekarang kita belum akan membahas reflection… kita akan menggunakan paket Array yang terdapat pada reflection untuk menyusun method yang dapat meng-create array yang seolah-olah dinamis. [sourcecode language=“java”] import java.lang.reflect.Array; //… //… Object addElement(Object[] inArray, Object element) { Object outArray; if (!inArray[inArray.length-1].isEmpty()) { Class cl = inArray.getClass(); if (!cl.isArray()) { return null; } Class CompType = cl.getComponentType(); outArray = Array.newInstance(CompType, inArray.length+1); System.arraycopy(inArray,0,outArray,0,inArray.length); outArray[outArray.length-1] = element; return outArray; } else { inArray[inArray.length-1] = element; } return inArray; } [/sourcecode] kita dapat menggunakan method diatas seperti ini [sourcecode language=“java”] String[] myArray = String[1]; myArray = addElement(myArray, “Tokido Saya”); myArray = addElement(myArray, “Natsume Rin”); myArray = addElement(myArray, “Noumi Kudryavka”); for (int i = 0; i < myArray.length; i++) { System.out.println(myArray[i]); } System.out.println(myArray.length); [/sourcecode] output program di atas Tokido Saya Natsume Rin Noumi Kudryavka 3

kita lihat di awal kode kita membuat array dengan ukuran 1 elemen pada method addElement, program akan memeriksa apakah array sudah penuh, jika ya program akan membuat array baru dengan ukuran array ditambah satu. lalu menambahkan elemen kedalamnya…

selanjutnya kita coba buat array yang ukurannya bisa diciutkan, juga mengakses elemen secara random, next time…..