Rabu, 14 Desember 2011

Kelas Pembungkus (Java)


Seperti disebutkan sebelumnya, pemrograman generik pada Java tidak berlaku untuk tipe primitif. Kita akan bahas masalah ini sebelum kita beranjak pada bagian berikutnya.

Kita tidak bisa menyimpan integer pada struktur data generik yang didesain untuk menyimpan Object. Di lain pihak, tidak ada yang menghentikan kita untuk membuat objek yang hanya berisi integer dan menggunakan objek itu untuk ditempatkan pada struktur data.

Dalam kasus sederhana, kita akan membuat kelas yang tidak berisi apa-apa kecuali sebuah integer :
public class KontainerInt {
    public int nilai;
}
Sebenarnya, Java telah memiliki kelas seperti ini. Objek yang bertipe java.lang.Integer berisi sebuah int saja. Kelas ini disebut kelas pembungkus (wrapper) untuk int. Nilai int bisa dimasukkan dalam konstruktor, misalnya
Integer bil = new Integer(17);


membuat objek Integer yang membungkus angka 17. Objek Integer bisa digunakan untuk struktur data generik dan dalam situasi lain jika objek dibutuhkan. Nilai int tersebut disimpan dalam variabel instansi private final dari objek Integer.

Jika bil variabel yang menunjuk pada objek bertipe Integer, maka kita akan tahu berapa bilangan yang disimpan dalam objek ini dengan memanggil metode instansi bil.intValue(). Kita tidak bisa mengganti angka tersebut. Kita sebut objek Integersebagai objek immutable (objek yang tak mungkin berubah, yaitu lawan kata dari mutable atau dapat bermutasi). Artinya, setelah dibuat, kita tidak bisa mengubahnya. (Sama seperti objek bertipe Stringadalah objek immutable).

Ada kelas pembungkus untuk semua tipe primitif. Semua objek dari tipe ini adalah objek immutable. Kelas pembungkus untuk tipe double adalah java.lang.Double. Nilai di dalam objek bertipe Double bisa diambil dengan metode instansidoubleValue().

Kelas pembungkus memiliki beberapa metode yang berguna. Beberapa digunakan untuk mendukung pemrograman generik. Misalnya, kelas pembungkus mendefinisikan metode equals(Object) dan compareTo(Object) dengan benar.

Metode lain dalam kelas pembungkus adalah fungsi bantu untuk bekerja dengan tipe primitif. Misalnya, kita temukan sebelumnya metode Integer.parseInt(String) dan Double.parseDouble(String). Fungsi ini digunakan untuk mengubah string seperti "42" atau "2.3421213" ke dalam angka yang sesuai.

Tidak ada komentar:

Posting Komentar